我正在使用 PrimeFaces 3.5,但我遇到了部分页面渲染的问题。我需要将 Facelet 文件中的内容加载到模板的“动态”部分。
index.xhtml
:
<f:view>
<h:form id="form1">
<p:outputPanel layout="block">
<p:commandButton action="content-2?faces-redirect=false" update="display" />
</p:outputPanel>
<p:outputPanel id="display" layout="block">
content 1
</p:outputPanel>
</h:form>
</f:view>
content-2.xhtml
:
<h:body>
content 2 loaded
</h:body>
当我点击<p:commandButton>
,然后content-2.xhtml
将被打开。但是,这会刷新整个页面。XML 响应包含如下内容:
<partial-response><changes><update id="javax.faces.ViewRoot">
当我将action
属性更改为方法表达式时:
<f:view>
<h:form id="form1">
<p:outputPanel layout="block">
<p:commandButton action="#{myBean.increment}" update="display" />
</p:outputPanel>
<p:outputPanel id="display" layout="block">
#{myBean.count}
</p:outputPanel>
</h:form>
</f:view>
然后display
块按预期更新。XML 响应包含如下内容:
<partial-response><changes><update id="form:display">
为什么action="content-2?faces-redirect=false"
更新整个页面的方式?
我也尝试过<ui:composition>
,但在这种情况下,这会重新加载模板的“静态”部分。我不想要这个。