我有一个 Web 应用程序,我将通过页面上的表单动态加载外部 JSF 文件,例如。
是否可以将 JSF 页面加载为字符串(WAR 外部的文件)并将其传递给 Face Servlet 进行解释?
我不知道您对“动态加载外部 JSF 文件”的确切含义。如果您想通过 ajax 用您存储在单独文件中的片段替换部分视图,您可以这样做:
<h:commandButton value="click me">
<f:ajax render="panel" listener="#{bean.actionListener}" />
</h:commandButton>
<h:panelGroup id="panel">
<h:panelGroup rendered="#{bean.condition}">
<ui:include src="snippet.xhtml" />
</h:panelGroup>
<h:panelGroup rendered="#{bean.anotherCondition}">
<ui:include src="snippet2.xhtml" />
</h:panelGroup>
</h:panelGroup>
进行 ajax 调用并重新呈现 panelGroup。在此 panelGroup 中,您可以根据某些条件渲染文件。
更新:这里和这里讨论了如何通过ResourceResolver加载外部 Facelets 。