2012-12-06 89 views
0

我遇到了Ajax和PrimeFaces的問題。多個Ajax干擾PrimeFaces項目

的頁面應該做的:(單選按鈕)

- 一旦情況下是有效的「CAS 1」和「中科院2」之間

- 用戶的動產,一個Ajax查詢應顯示一個輸入文本區域爲「cas 1」和幾個爲「cas 2」。在輸入文本區域中應保存在數據庫中

真正發生:

- 用戶「CAS 1」之間的動產和「中科院2」

,即輸入文本區域(一個或多個)顯示正確的第一次,然後不會再次改變,如果你在「Cas 1」和「Cas 2」之間切換。此外,文本不保存在數據庫中。

單獨(無單選按鈕),無論是 「CAS 1」 和 「中科院2」 工作正確

這裏是我使用的代碼:

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:h="http://java.sun.com/jsf/html" 
    xmlns:p="http://primefaces.org/ui" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets" 
    xmlns:c="http://java.sun.com/jsp/jstl/core"> 

<h:body> 
    <h:form id="form"> 

     <p:messages id="messages" showDetail="true" autoUpdate="true"/> 

     <h:panelGrid columns="1" > 
      <h:outputText value="Cas 1 : sélection « travail identique pour l’ensemble des CDC » ou un seul CDC" /> 
      <h:outputText value=" " /> 
      <h:outputText value="Cas 2 : sélection « travail différent suivant les CDC »" /> 

      <p:selectOneRadio id="CasTrois" value="#{growlBean.casTrois}" required="true"> 
       <f:selectItem itemLabel="Cas 1" itemValue="1" />        
       <f:selectItem itemLabel="Cas 2" itemValue="2" /> 
       <p:ajax event="change" update="displayTrois" /> 
      </p:selectOneRadio>         
     </h:panelGrid> 

     <h:panelGrid columns="1" id="displayTrois"> 
      <c:if test="${growlBean.casTrois == 1}"> 
       <h:outputText value="Expliquer succinctement en quoi consiste l’affaire." /> 
       <h:outputText value="Donner notamment les informations liées à l’affaire mais ne figurant pas dans les CDC." /> 
       <h:outputText value=" " /> 
       <h:outputText value="Exemple" style="font-weight:bold; color: green"/> 
       <h:outputText value="Relance en quantité 1 de tous les sous-ensembles de tous les CDC" style="font-weight:bold; color: green"/> 
       <h:panelGrid columns="2"> 
        <h:panelGrid columns="1"> 
         <p:inputTextarea rows="8" cols="100" required="false" validatorMessage="Le champ doit être rempli" 
              value="#{growlBean.natureDesTravaux}" autoResize="true" > 
          <p:ajax event="keyup" listener="#{growlBean.setNatureDesTravaux(natureDesTravaux)}"/> 
         </p:inputTextarea> 
        </h:panelGrid>          
       </h:panelGrid> 
      </c:if> 

      <c:if test="${growlBean.casTrois == 2}"> 
       <h:outputText value="Expliquer succinctement en quoi consiste l’affaire." /> 
       <h:outputText value="Donner notamment les informations liées à l’affaire mais ne figurant pas dans les CDC." /> 
       <p:dataTable id="TableauNatrureTravaux" value="#{growlBean.listCdcAffaire2}" var="detailCdc" > 
        <f:facet name="header"> 
         <h:outputText value="Nature des Travaux"/> 
        </f:facet> 
        <p:column > 
         <h:panelGrid columns="1"> 
          <p:outputLabel for="textTravaux" value="#{detailCdc.cdcId.outillageId.numeroOutil} #{detailCdc.cdcId.outillageId.designation}" /> 
          <p:inputTextarea id="textTravaux" rows="8" cols="100" value="#{detailCdc.natureTravauxPourFla}"  
              autoResize="true" required="false" validatorMessage="test" > 
           <f:validateLength minimum="1" /> 
           <p:ajax event="keyup" listener="#{detailCdc.setNatureTravauxPourFla(natureTravauxPourFla)}"/> 
          </p:inputTextarea> 
         </h:panelGrid> 
        </p:column> 
       </p:dataTable> 
      </c:if> 
     </h:panelGrid>    

    </h:form>   
</h:body> 

有人可以幫助我試圖刷新頁面並保存文本?

+0

這將是有助於添加「growlBean」的代碼或至少描述它的範圍。 –

回答

0

要使單選按鈕正常工作的displayTrois元素更改爲以下,(如果這樣做不能解決它,你將需要發佈你的bean的信息,包括監聽器):

<p:panel id="displayTrois"> 
<h:panelGrid columns="1" rendered="${growlBean.casTrois == 1}"> 
      <h:outputText value="Expliquer succinctement en quoi consiste l’affaire." /> 
      <h:outputText value="Donner notamment les informations liées à l’affaire mais ne figurant pas dans les CDC." /> 
      <h:outputText value=" " /> 
      <h:outputText value="Exemple" style="font-weight:bold; color: green"/> 
      <h:outputText value="Relance en quantité 1 de tous les sous-ensembles de tous les CDC" style="font-weight:bold; color: green"/> 
      <h:panelGrid columns="2"> 
       <h:panelGrid columns="1"> 
        <p:inputTextarea rows="8" cols="100" required="false" validatorMessage="Le champ doit être rempli" 
             value="#{growlBean.natureDesTravaux}" autoResize="true" > 
         <p:ajax event="keyup" listener="#{growlBean.setNatureDesTravaux(natureDesTravaux)}"/> 
        </p:inputTextarea> 
       </h:panelGrid>          
      </h:panelGrid> 


    </h:panelGrid> 
    <h:panelGrid columns="1" rendered="${growlBean.casTrois == 2}"> 
      <h:outputText value="Expliquer succinctement en quoi consiste l’affaire." /> 
      <h:outputText value="Donner notamment les informations liées à l’affaire mais ne figurant pas dans les CDC." /> 
      <p:dataTable id="TableauNatrureTravaux" value="#{growlBean.listCdcAffaire2}" var="detailCdc" > 
       <f:facet name="header"> 
        <h:outputText value="Nature des Travaux"/> 
       </f:facet> 
       <p:column > 
        <h:panelGrid columns="1"> 
         <p:outputLabel for="textTravaux" value="#{detailCdc.cdcId.outillageId.numeroOutil} #{detailCdc.cdcId.outillageId.designation}" /> 
         <p:inputTextarea id="textTravaux" rows="8" cols="100" value="#{detailCdc.natureTravauxPourFla}"  
             autoResize="true" required="false" validatorMessage="test" > 
          <f:validateLength minimum="1" /> 
          <p:ajax event="keyup" listener="#{detailCdc.setNatureTravauxPourFla(natureTravauxPourFla)}"/> 
         </p:inputTextarea> 
        </h:panelGrid> 
       </p:column> 
      </p:dataTable> 
    </h:panelGrid> 
</p:panel>