gpt4 book ai didi

java - 当复合组件放置在 PrimeFaces p :dialog 内时,不会调用 encodeAll 方法

转载 作者:行者123 更新时间:2023-11-30 09:24:53 24 4
gpt4 key购买 nike

我已经测试了 Balusc 的 inputDate 组件:Composite component with multiple input fields 在 PrimeFaces 对话框中。 encodeAll 方法根本没有被调用,选择框也没有被初始化。当放置在文章中所示的表单中时,复合组件工作正常。

为什么 encodeAll 在对话框中不起作用,如何解决?

编辑 1

我使用 Mojarra 2.1.13 和 PrimeFaces 3.4.2。

编辑 2这是我的真实项目的示例。我使用您的组件来了解复合组件。我有一个带有数据表和工具栏的 View 帐户。按添加应该会打开一个带有自定义向导的对话框。对话框有自己的形式,但不显示向导。

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>

最佳答案

这是由 PrimeFaces CoreRenderer 引起的不打电话 UIComponent#encodeAll()renderChildren()方法,但是 encodeBegin() , encodeChildren()encodeEnd()个别地。因此,当它被声明为 PrimeFaces 组件的直接子组件时它总是会失败,但当它被声明为标准 JSF 组件的直接子组件时它将起作用。

如果您在 encodeBegin() 中执行工作而不是 encodeAll() ,那么它应该工作。我相应地更新了复合组件文章。

在一个不相关的说明中,<p:dialog>应该有自己的形式。

关于java - 当复合组件放置在 PrimeFaces p :dialog 内时,不会调用 encodeAll 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15493746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com