2013-01-23 45 views
0

可能重複不更新:
Primefaces:text field is not updated when dialog hidesPrimefaces:父組件的文本框時,對話框隱藏

我試着從對話框.The文本字段更新文本字段是父組件。但沒有發生。如果我在更新命令按鈕時給出文本字段的ID。我遇到了錯誤。 。 由於它無法找到組件ID。我已經使用了替代方案。我點了隱藏字段。單擊命令按鈕後,隱藏字段被更新,並通過簡單的JavaScript函數更新父組件的文本字段。在對話框的命令按鈕的oncomplete中調用javascript函數。 由於按照項目要求,我必須通過primefaces而不是通過javascript來實現它。 Plz,建議我在primefaces中的方法。 下面的代碼片段:

Selected Customer <p:inputText id="customerCode" 
     value="#{sixthTabBBean.customerName}" label="Selected Adddress"></p:inputText> 
    Selected Customer City <p:inputText id="selectedCity" value="#{sixthTabBBean.customerCity}" ></p:inputText> 
    <ecap:lookup lookupId="LOV0072" inputId="customerCode" clickStatus="city" 
     defaultDDValueIndex="0" title="CustomerCode"></ecap:lookup> 

     New LOV <ecap:lookup lookupId="LOV0092" inputId="customerCode" clickStatus="none" 
     defaultDDValueIndex="0" title="CustomerCode"></ecap:lookup> 

    City<p:inputText id="custCity" value="#{sixthTabBBean.customerCity}" 
     disabled="true" label="City"></p:inputText> 
    Selected Customer <p:inputText id="customerCode1" 
     value="#{sixthTabBBean.customerName}" label="Selected Adddress" ></p:inputText> 
    Selected Customer City <p:inputText id="selectedCity1" value="#{sixthTabBBean.customerCity}" ></p:inputText> 
    Selected Customer State <p:inputText id="selectedSate1"  value="#{sixthTabBBean.customerState}" ></p:inputText> 
    <ecap:lookup lookupId="LOV0098" inputId="customerCode" clickStatus="state" 
     defaultDDValueIndex="0" title="CustomerCode"></ecap:lookup> 
    <p:dialog id="lkpDialog" widgetVar="lpDialogVar" header="Lookup" 
     modal="true" width="1000" height="600" 
     rendered="#{lookupSearch.popupRender}" > 
     <h:form rendered="#{lookupSearch.popupRender}" prependId="false"> 
      <h:panelGrid cellpadding="10" id="diaFrmId"> 
       <p:dataTable id="newfdt" var="flxSearch" 
        value="#{lookupSearch.lkpSearchCriteriaList}"> 

        <p:column id="newwhc"> 
         <f:facet name="header"> 
          <h:outputLabel value="Search Fields"></h:outputLabel> 
         </f:facet> 
         <p:selectOneMenu styleClass="fdd180" id="newwdd" 
          value="#{flxSearch.searchCriterion.whereClause}"> 
          <f:selectItems value="#{flxSearch.whrClausDropdown}" /> 
         </p:selectOneMenu> 
        </p:column> 

        <p:column id="newcoc"> 
         <f:facet name="header"> 
          <h:outputLabel value="Conditions"></h:outputLabel> 

         </f:facet> 
         <p:selectOneMenu id="newco" styleClass="fdd95" 
          value="#{flxSearch.searchCriterion.operator}"> 
          <f:selectItems id="newcriOperatorItms" 
           value="#{flxSearch.operatorDropdown}" /> 
         </p:selectOneMenu> 
        </p:column> 

        <p:column id="newcic"> 
         <f:facet name="header"> 
          <h:outputLabel value="Value"></h:outputLabel> 

         </f:facet> 
         <p:inputText id="newcriInpNm" 
          rendered="#{!flxSearch.inputDate and !flxSearch.boolValue and !flxSearch.required}" 
          styleClass="285 ftb" deferChangeEvent="true" 
          value="#{flxSearch.searchCriterion.value}" 
          maxlength="#{flxSearch.maxLength}" 
          disabled="#{flxSearch.disableInput}" partialSubmit="true" 
          labelValue="#{flxSearch.searchCriterion.label}" 
          required="#{flxSearch.required}"> 
         </p:inputText> 

         <p:inputText id="newcriInpM" 
          rendered="#{!flxSearch.inputDate and !flxSearch.boolValue and flxSearch.required }" 
          value="#{flxSearch.searchCriterion.value}" 
          maxlength="#{flxSearch.maxLength}" 
          disabled="#{flxSearch.disableInput}" 
          labelValue="#{flxSearch.searchCriterion.label}" 
          required="#{flxSearch.required}"> 

         </p:inputText> 

         <p:selectOneMenu styleClass="fdd" id="newbldd" 
          value="#{flxSearch.searchCriterion.value}" 
          disabled="#{flxSearch.disableInput}" 
          rendered="#{flxSearch.boolValue }"> 
          <f:selectItems value="#{flxSearch.booleanDropdown}" /> 
         </p:selectOneMenu> 

         <p:calendar id="newcriDtNm" size="9" 
          rendered="#{flxSearch.inputDate and !flxSearch.boolValue and !flxSearch.required }" 
          disabled="#{flxSearch.disableInput}" showOn="button" 
          value="#{flxSearch.searchCriterion.value}" 
          labelValue="#{flxSearch.searchCriterion.label}"> 
         </p:calendar> 

         <p:calendar id="newcriDtM" size="9" 
          rendered="#{flxSearch.inputDate and !flxSearch.boolValue and flxSearch.required }" 
          disabled="#{flxSearch.disableInput}" 
          value="#{flxSearch.searchCriterion.value}" 
          enableChangeDetector="false" partialSubmit="true" 
          labelValue="#{flxSearch.searchCriterion.label}" 
          required="#{flxSearch.required}" showOn="button"> 
         </p:calendar> 

        </p:column> 
       </p:dataTable> 
       <!-- hidden text used to update values in the parent component --> 
       <p:inputText type="hidden" id="hiddencustomerCode" 
        value="#{sixthTabBBean.customerName}" ></p:inputText> 
       <p:inputText type="hidden" id="hiddencustCity" 
        value="#{sixthTabBBean.customerCity}" ></p:inputText> 
       <p:inputText type="hidden" id="hiddencustState" 
       value="#{sixthTabBBean.customerState}" ></p:inputText> 

       <p:fieldset legend="Combined By"> 
        <h:panelGrid columns="2" cellpadding="10"> 
         <p:selectOneRadio id="newSlctDrk" 
          valueChangeListener="#{lookupSearch.getSelectedLogOpr}" 
          value="#{lookupSearch.selLogOpr}" 
          title="Combine all search criteria with AND or OR"> 
          <f:selectItems id="newSlctDrkItms" 
           value="#{lookupSearch.logicalOperators}" /> 
         </p:selectOneRadio> 
        </h:panelGrid> 
       </p:fieldset> 
       <h:panelGrid columns="3"> 
        <p:commandButton value="Find" id="lkpfndDg" update="resultFldSet" 
         actionListener="#{lookupSearch.search}"> 
        </p:commandButton> 
        <p:commandButton value="Clear" id="lkpClearDg" 
         actionListener="#{lookupSearch.clear}" /> 
       </h:panelGrid> 
       <p:fieldset legend="Result" id="resultFldSet"> 
         <p:dataTable binding="#{lookupSearch.lkpResultDataTable}" 
          value="#{lookupSearch.searchResultsForPage}"></p:dataTable> 
       </p:fieldset> 
       <p:commandButton value="Select" id="lkpSltRec" update="customerCode" 
        oncomplete="lpDialogVar.hide();insertSelectedValue();" 
        actionListener="#{lookupSearch.selectValue}" /> 
      </h:panelGrid> 
     </h:form> 
    </p:dialog> 

</h:panelGrid> 

這裏ECAP:查找是自定義組件

回答

0

最後,我已經得到了解決。我遇到的例外是因爲表單標籤。從對話框中觸發的ajax事件無法在表單外找到該組件。所以我已經附上了表單標籤的頁面。這裏是代碼片段。

0

enter code here選擇的客戶 選擇的客戶市 新LOV 市 選擇的客戶 選擇的客戶市 選擇的客戶國家 - >

    <p:column id="newwhc"> 
         <f:facet name="header"> 
          <h:outputLabel value="Search Fields"></h:outputLabel> 
         </f:facet> 
         <p:selectOneMenu styleClass="fdd180" id="newwdd" 
          value="#{flxSearch.searchCriterion.whereClause}"> 
          <f:selectItems value="#{flxSearch.whrClausDropdown}" /> 
         </p:selectOneMenu> 
        </p:column> 

        <p:column id="newcoc"> 
         <f:facet name="header"> 
          <h:outputLabel value="Conditions"></h:outputLabel> 

         </f:facet> 
         <p:selectOneMenu id="newco" styleClass="fdd95" 
          value="#{flxSearch.searchCriterion.operator}"> 
          <f:selectItems id="newcriOperatorItms" 
           value="#{flxSearch.operatorDropdown}" /> 
         </p:selectOneMenu> 
        </p:column> 

        <p:column id="newcic"> 
         <f:facet name="header"> 
          <h:outputLabel value="Value"></h:outputLabel> 

         </f:facet> 
         <p:inputText id="newcriInpNm" 
          rendered="#{!flxSearch.inputDate and !flxSearch.boolValue and !flxSearch.required}" 
          styleClass="285 ftb" deferChangeEvent="true" 
          value="#{flxSearch.searchCriterion.value}" 
          maxlength="#{flxSearch.maxLength}" 
          disabled="#{flxSearch.disableInput}" partialSubmit="true" 
          labelValue="#{flxSearch.searchCriterion.label}" 
          required="#{flxSearch.required}"> 
         </p:inputText> 

         <p:inputText id="newcriInpM" 
          rendered="#{!flxSearch.inputDate and !flxSearch.boolValue and flxSearch.required }" 
          value="#{flxSearch.searchCriterion.value}" 
          maxlength="#{flxSearch.maxLength}" 
          disabled="#{flxSearch.disableInput}" 
          labelValue="#{flxSearch.searchCriterion.label}" 
          required="#{flxSearch.required}"> 

         </p:inputText> 

         <p:selectOneMenu styleClass="fdd" id="newbldd" 
          value="#{flxSearch.searchCriterion.value}" 
          disabled="#{flxSearch.disableInput}" 
          rendered="#{flxSearch.boolValue }"> 
          <f:selectItems value="#{flxSearch.booleanDropdown}" /> 
         </p:selectOneMenu> 

         <p:calendar id="newcriDtNm" size="9" 
          rendered="#{flxSearch.inputDate and !flxSearch.boolValue and !flxSearch.required }" 
          disabled="#{flxSearch.disableInput}" showOn="button" 
          value="#{flxSearch.searchCriterion.value}" 
          labelValue="#{flxSearch.searchCriterion.label}"> 
         </p:calendar> 

         <p:calendar id="newcriDtM" size="9" 
          rendered="#{flxSearch.inputDate and !flxSearch.boolValue and flxSearch.required }" 
          disabled="#{flxSearch.disableInput}" 
          value="#{flxSearch.searchCriterion.value}" 
          enableChangeDetector="false" partialSubmit="true" 
          labelValue="#{flxSearch.searchCriterion.label}" 
          required="#{flxSearch.required}" showOn="button"> 
         </p:calendar> 

        </p:column> 
       </p:dataTable> 
        <p:fieldset legend="Combined By"> 
        <h:panelGrid columns="2" cellpadding="10"> 
         <p:selectOneRadio id="newSlctDrk" 
          valueChangeListener="#{lookupSearch.getSelectedLogOpr}" 
          value="#{lookupSearch.selLogOpr}" 
          title="Combine all search criteria with AND or OR"> 
          <f:selectItems id="newSlctDrkItms" 
           value="#{lookupSearch.logicalOperators}" /> 
         </p:selectOneRadio> 
        </h:panelGrid> 
       </p:fieldset> 
       <h:panelGrid columns="3"> 
        <p:commandButton value="Find" id="lkpfndDg" update="resultFldSet" 
         actionListener="#{lookupSearch.search}"> 
        </p:commandButton> 
        <p:commandButton value="Clear" id="lkpClearDg" 
         actionListener="#{lookupSearch.clear}" /> 
       </h:panelGrid> 
       <p:fieldset legend="Result" id="resultFldSet"> 
         <p:dataTable binding="#{lookupSearch.lkpResultDataTable}" 
          value="#{lookupSearch.searchResultsForPage}"></p:dataTable> 
       </p:fieldset> 
       <p:commandButton value="Select" id="lkpSltRec" update="customerCode,customerCode1,selectedCity1,selectedSate1" 
        oncomplete="lpDialogVar.hide();insertSelectedValue();" 
        actionListener="#{lookupSearch.selectValue}" /> 
      </h:panelGrid> 
     <!-- </h:form>--> 
    </p:dialog> 

</h:panelGrid> 
</h:form>