我遇到了Ajax和PrimeFaces的问题。
页面应该做什么:
- “Cas 1”和“Cas 2”(radiobuttons)之间的用户选择
- 一旦验证了一个案例,Ajax查询应该为“cas 1”显示一个输入文本区域,为“cas 2”显示几个输入文本区域。输入文本区域中的文本应保存在数据库中
真正发生的事情:
- “Cas 1”和“Cas 2”之间的用户选择
- 输入文本区域第一次正确显示,如果在“Cas 1”和“Cas 2”之间切换,则不会再次更改。此外,文本未保存在数据库中。
另外(没有radiobuttons),“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>
有人可以帮我刷新页面并保存文字吗?
答案 0 :(得分: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>