【发布时间】:2013-05-29 01:52:36
【问题描述】:
我想从 overlayPanel 向 bean 提交值表单 jsf 页面,并带有如下复选框:
为了显示覆盖面板和 ajax 提交,我使用了这段代码,并在调试器中看到它没问题:
<p:commandButton id="joinBtn" value="Basic" type="button" disabled="#{dataPropertyCurrent.notJoinable}"/>
<p:overlayPanel id="joinPanel" for="joinBtn" appendToBody="true" dynamic="false">
<f:facet name="header">Details</f:facet>
<p:dataList value="#{treeBean.getDataPropsCouldBeJoinedWith(dataPropertyCurrent)}" type="definition" var="dataJoinVal">
<h:panelGrid columns="2" cellpadding="10">
<h:column>
<p:selectBooleanCheckbox value="#{dataJoinVal.checked}" id="cbID">
<p:ajax event="change" update="cbID" partialSubmit="true"/>
</p:selectBooleanCheckbox>
</h:column>
<h:column>
<h:outputText value="#{dataJoinVal.caption}" />
</h:column>
</h:panelGrid>
</p:dataList>
<!--<p:commandButton value="Apply" id="btnApplyJoin" type="button" process="@parent" />-->
<h:outputLabel value="ID: #{dataPropertyCurrent.joinDataPropertyId}" />
</p:overlayPanel>
但是当overlayPanel被隐藏并使用此代码按下表单提交按钮之后:
<p:commandButton value="Apply join" update="joinAccordionPanel,dsAccordionPanelMain" actionListener="#{treeBean.applyJoinOptions}" />
- 它再次将“false”设置为 bean 布尔值。
那么如何正确提交overlayPanel值给bean呢?
PrimeFaces 版本:3.5
【问题讨论】:
-
it sets "false" to bean boolean value again.是什么意思?布尔值在任何时候都是 true 还是非原始Boolean? -
首先,通过勾选复选框上的 ajax 事件将 bean 布尔值设置为“true”,但之后按下“提交”按钮以传输更多表单数据 - 它尝试将“false”设置为bean 布尔变量。
-
可以发一下
treeBean.applyJoinOptions的代码吗? -
这里没什么有趣的,只是迭代包含布尔值的 POJO 列表。
标签: jsf primefaces