【发布时间】:2013-03-07 18:55:12
【问题描述】:
我已经在 PrimeFaces 对话框中测试了 Balusc 的 inputDate 组件:Composite component with multiple input fields 。 encodeAll 方法根本没有被调用,选择框也没有被初始化。复合组件在放置在文章中所示的表单中时可以正常工作。
为什么encodeAll 在对话框中不起作用,如何解决?
编辑 1
我使用 Mojarra 2.1.13 和 PrimeFaces 3.4.2。
编辑 2 这是我真实项目中的一个示例。我使用您的组件来了解复合组件。我有一个视图帐户,带有一个数据表和一个工具栏。按添加应该会打开一个带有自定义向导的对话框。对话框有自己的形式,但不显示向导。
accounts.xhtml
<h:form id="form">
<ui:include src="/WEB-INF/flows/accounts/accountsTable.xhtml" />
</h:form>
<ui:include src="/WEB-INF/flows/accounts/mainDialog4.xhtml" />
accountsTable.xhtml
<p:dataTable id="accounts" ... />
<p:toolbar>
<p:toolbarGroup align="left">
<p:commandButton value="Add"
action="#{accountsBean.initializeEntity}"
process="@this" update=":actionsDialog4"
oncomplete="actionsDialogWidget4.show()">
<f:setPropertyActionListener value="#{2}"
target="#{accountsBean.operation}" />
<f:setPropertyActionListener value="accountsBean"
target="#{sessionScope.beanName}" />
</p:commandButton>
</p:toolbarGroup>
</p:toolbar>
mainDialog4.xhtml
<p:dialog id="actionsDialog4" widgetVar="actionsDialogWidget4" dynamic="true"
modal="true">
<h:form>
<costom:actionWizard name="wizard" widgetVar="wiz" bean="#{accountsBean}" header="#{accountsBean.entityHeader}" />
</h:form>
</p:dialog>
【问题讨论】:
-
无法在 Tomcat 7.0.37 上使用 Mojarra 2.1.20 和 PrimeFaces 3.5 重现它。在未来的问题中,请提及所使用的确切库 impl/versions 并包括 SSCCE。
-
添加了图书馆信息。
-
现在是 SSCCE。我至少不能用
<h:body>中的这个最小的sn-p重现它:<p:button value="dialog" onclick="foo.show();return false;"/><p:dialog widgetVar="foo"><h:form><my:inputDate/></h:form></p:dialog> -
我进行了不同的测试:
<h:form><p:commandButton process="@this" value="dialog" oncomplete="foo.show()" update="mainDialog"/><p:dialog id="mainDialog" widgetVar="foo"><my:inputDate/></p:dialog></h:form> -
这是无效的对话框语法。对话框不应以任何形式放置,而应有自己的形式。
标签: java jsf-2 primefaces dialog composite-component