簡體   English   中英

在 p:datatable primefaces 之外找不到標識符為 h:selectBooleanCheckbox 的組件

[英]Cannot find component with identifier h:selectBooleanCheckbox outside p:datatable primefaces

我在我的應用程序中有此代碼我想將 h:selectBooleanCheckbox 值提交給服務器,h:selectBooleanCheckbox 內部 p:tabView 和外部 p:dataTable 我想提交 h:selectBooleanCheckbox 值來自 p:ajax process="scenarioTabViewId:isApprovedBooleanId_checkBox" sceneTabViewId :isApprovedBooleanId_checkBox 這是由 firefox v23.0 創建的復選框 id 和 sceneTabViewId: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

提前致謝

首先,刪除<h:form prependId="false"> 它與ajax不兼容。 現在不要忘記給表單一個固定的 ID。

<h:form id="formId" styleClass="form">

其次, process屬性在您的情況下是錯誤的,您使用了 EL 表達式,其中組件的客戶端 ID 作為 EL 范圍中的變量。 這沒有任何意義。 把它變成一個普通的字符串。

可以在以下答案中找到引用正確客戶端 ID 的規則: How to find out client ID of component for ajax update/render? 無法找到從 "bar" 引用的表達式 "foo" 的組件 應用它,它應該看起來像這樣(注意:前綴):

process=":formId:scenarioTabViewId:isApprovedBooleanId_checkBox"

另一種方法是將物理復選框組件綁定到視圖,如下所示:

<p:selectBooleanCheckbox binding="#{checkbox}" ... />

然后像這樣在UIComponent#getClientId()幫助下引用它的客戶端 ID(同樣在這里,注意:前綴):

process=":#{checkbox.clientId}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM