0

我遇到了 Ajax 和 PrimeFaces 的问题。

页面应该做什么:

-用户在“Cas 1”和“Cas 2”(单选按钮)之间进行选择

- 验证案例后,Ajax 查询应显示“cas 1”的一个输入文本区域和“cas 2”的多个输入文本区域。输入文本区域中的文本应保存在数据库中

真正发生的事情:

-用户在“Cas 1”和“Cas 2”之间进行选择

- 输入文本区域第一次正确显示,然后如果您在“Cas 1”和“Cas 2”之间切换,则不会再次更改。此外,文本未保存在数据库中。

单独(没有单选按钮),“Cas 1”和“Cas 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> 

有人可以帮我尝试刷新页面并保存文本吗?

4

1 回答 1

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>
于 2012-12-06T18:37:03.850 回答