我将 primefaces 3.5 与 JSF mojarra 2.2 一起使用。
我有一个包含两个 ui:include 的页面,它们包含在 ap:dialog 中,并且 ui:param 用于将值传入/传出包含。
<p:dialog header="Customer Selection Criteria" widgetVar="customerSelectionDialog" width="1200" position="center" appendToBody="true">
<h:form id="customerForm">
<p:outputPanel id="customerSelection">
<ui:include src="../INTERNAL/8500.xhtml">
<ui:param name="showCidSelect" value="1" />
<ui:param name="targetObject" value="#{customerDetailsInquiry.cf8444.cg1014.cg1014cidnumb}" />
</ui:include>
<p:commandButton rendered="false" value="#{COMMON.COMMON_SELECTBUTTON}" action="#{customerDetailsInquiry.tchelp.handleReturnFromCustomerSelectionCriteria}" oncomplete="customerSelectionDialog.hide();" update=":mainForm:cf8444icg1014c1002" >
<f:setPropertyActionListener value="#{customerSearchEngine}" target="#{flash.customerSearchEngine}"/>
</p:commandButton>
</p:outputPanel>
</h:form>
</p:dialog>
<p:dialog closeOnEscape="true" modal="true" appendToBody="false" header="Entity Stack" widgetVar="entityStackDialog" width="400" >
<h:form id="entityForm">
<ui:include src="../INTERNAL/StackedEntity.xhtml">
<ui:param name="displayCaption" value="CID Numbers" />
<ui:param name="department" value="8" />
<ui:param name="stackedObject" value="#{customerDetailsInquiry.cf8444.cg1014.cg1014cidnumb}" />
</ui:include>
</h:form>
</p:dialog>
支持豆:
FaceletContext faceletContext = (FaceletContext) FacesContext.getCurrentInstance().getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
String paramValue = (String) faceletContext.getAttribute("showCidSelect");
现在问题出在“ showCidSelect ”参数上。
showCidSelect决定是否在8500.xhtml中显示“选择”按钮。
由于上述示例中的“ showCidSelect ”设置为“1”,因此应呈现选择按钮。
如果没有“ StackedEntity.xhtml ”的第二个对话框,这可以很好地工作。
但是,当我放置第二个对话框及其 ui:param 时,这将停止工作,并且 FaceletContext getAttribute 调用返回 null。
截至目前,我被迫在两个对话框中都包含“ showCidSelect ”,然后一切正常。但我不知何故觉得这个问题还有其他更好的可能解决方案。
请求专家帮助