我的应用程序中有这个代码 我想将h:selectBooleanCheckbox值提交给服务器, h:p:tabView中的selectBooleanCheckbox和p:dataTable外的 我想提交h:selectBooleanCheckbox值 p:ajax process =" scenarioTabViewId:isApprovedBooleanId_checkBox" scenarioTabViewId:isApprovedBooleanId_checkBox这是firefox v23.0创建的复选框ID 和scenarioTabViewId:budgetAnalysisDataTableId这是数据表id 任何一个解释,我该怎么办? 这是.xhtml中的实际代码
<ui:composition template="/template/mastertemplate.xhtml">
<ui:define name="content">
<h:form styleClass="form" prependId="false">
<p:panel id="analysisTheBudgetPenel" header="Analysis The Budget">
<p:tabView id="scenarioTabViewId" style="width:850px">
<p:tab title="Scenario One" id="scen">
<h:selectBooleanCheckbox id="isApprovedBooleanId_checkBox" value="#{budgetAnalysisAction.budgetScenarioHescoProposalBean.abc}" />
<p:scrollPanel style="width:800px; height:auto;">
<p:dataTable id="budgetAnalysisDataTableId" rowIndexVar="index" editable="true" resizableColumns="true" value="#{budgetAnalysisAction.budgetScenarioHescoProposalBean.budgetScenarioHescoProposalListBean}" var="budgetScenarioHescoProposalList">
<p:ajax event="rowEdit" process="#{scenarioTabViewId:isApprovedBooleanId_checkBox}" listener="#{budgetAnalysisAction.testAjax}" />
// some columns
// closing tags of above
提前致谢
答案 0 :(得分:2)
首先,删除<h:form prependId="false">
。它与ajax不兼容。不要忘记现在给表格一个固定的身份证。
<h:form id="formId" styleClass="form">
其次,process
属性在您的情况下是错误的,您正在使用EL表达式,其中组件的cliend ID作为EL范围中的变量。这没有任何意义。只需将它设为普通字符串即可。
可以在以下答案中找到引用正确客户端ID的规则:How to find out client ID of component for ajax update/render? Cannot find component with expression "foo" referenced from "bar"。应用它,它应该看起来像这样(注意:
前缀):
process=":formId:scenarioTabViewId:isApprovedBooleanId_checkBox"
另一种方法是将物理复选框组件绑定到视图,如下所示:
<p:selectBooleanCheckbox binding="#{checkbox}" ... />
然后在UIComponent#getClientId()
的帮助下引用其客户端ID(也在这里,请注意:
前缀):
process=":#{checkbox.clientId}"