2013-01-23 42 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>