在JSF2中,是否可以使用Ajax请求动态更改ui:include的src值(例如PrimeFacesp:commandButton)?谢谢。
<h:form> <h:commandLink value="Display 2" action="#{fTRNav.doNav()}"> <f:setPropertyActionListener target="#{fTRNav.pageName}" value="/disp2.xhtml" /> </h:commandLink> </h:form> <ui:include src="#{fTRNav.pageName}"></ui:include>
那就是我现在所拥有的。是否有可能使它成为Ajax(使用p:commandButton)?
另一个答案中提出的JSTL标签不是必需的,并且不能很好地重用。
这是一个使用纯JSF的基本示例(假设您运行Servlet 3.0 / EL 2.2,否则您确实需要<f:setPropertyActionListener>像在问题中那样使用):
<f:setPropertyActionListener>
<h:form> <f:ajax render=":include"> <h:commandLink value="page1" action="#{bean.setPage('page1')}" /> <h:commandLink value="page2" action="#{bean.setPage('page2')}" /> <h:commandLink value="page3" action="#{bean.setPage('page3')}" /> </f:ajax> </h:form> <h:panelGroup id="include"> <ui:include src="#{bean.page}.xhtml" /> </h:panelGroup>
与
private String page; @PostConstruct public void init() { this.page = "page1"; // Ensure that default is been set. } // Getter + setter.