小编典典

JSF动态包含使用Ajax请求

ajax

在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)?


阅读 329

收藏
2020-07-26

共1个答案

小编典典

另一个答案中提出的JSTL标签不是必需的,并且不能很好地重用。

这是一个使用纯JSF的基本示例(假设您运行Servlet 3.0 / EL
2.2,否则您确实需要<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.
2020-07-26