2013-06-29 162 views
0

我有一个Web应用程序,我会动态加载外部JSF文件,例如,通过页面上的表单。加载外部JSF页面

是否可以将JSF页面加载为字符串(WAR之外的文件)并将其传递给Face Servlet进行解释?

回答

1

我不知道你是什么意思,“动态加载外部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中。在此面板组中,您可以根据某些条件呈现文件。

更新:如何经由ResourceResolver来加载外部Facelets的讨论herehere

+0

好吧,我想我没有精确解释。我想在我的web应用程序中加载一个放置在服务器上的某个目录中的JSF页面,用于C:\ myPages \ myfile.xhtml下的emaple。那可能吗? – micuss

+1

对不起,我错过了你。这可以通过自定义[ResourceResolver](http://docs.oracle.com/javaee/6/api/javax/faces/view/facelets/ResourceResolver.html)完成。通常你会从类路径加载文件,但你可以尝试不同的方式。见[这个问题](http://stackoverflow.com/questions/5587808/how-to-use-facelets-composition-with-files-from-another-context)。 – lefloh

+0

它的工作原理。非常感谢。 – micuss