在进行ajax调用以呈现面板组panel1后,commandlink link2没有工作。当整个页面被重新编码而不是ajax调用以显示模态时,这是有效的。
Main.xhtml
<h:panelGroup id="panel1">
<ui:fragment rendered="#{downloadTo.showModal}">
<ui:include src="modal.xhtml" />
</ui:fragment>
</h:panelGroup>
<h:form>
<h:commandLink id="link" value="download" action="#{backing.openModal()}">
<f:ajax render="_panel1"/>
</h:commandLink>
</h:form>
modal.xhtml包含
<h:form>
<h:commandLink id="link2" value="download" action="#{backing.downloadData()}"/>
</h:form>
答案 0 :(得分:1)
您需要确保包含rendered
属性条件的辅助bean为@ViewScoped
。否则,该条件将在ajax请求上重新初始化为默认值。您还需要更改<f:ajax>
渲染以显式包含要进行ajax更新的任何其他<h:form>
的客户端ID,否则它将失去其视图状态。
E.g。在modal.xhtml
<h:form id="downloadForm">
<h:commandLink id="link2" value="download" action="#{backing.downloadData()}"/>
</h:form>
main.xhtml
<h:form>
<h:commandLink id="link" value="download" action="#{backing.openModal()}">
<f:ajax render="_panel1 _downloadForm" />
</h:commandLink>
</h:form>
答案 1 :(得分:0)
我看到的是,您正在呈现_panel1
而不是panel1
。这应该有效:
<h:commandLink id="link" value="download" action="#{backing.openModal()}">
<f:ajax render="panel1"/>
</h:commandLink>