如何在多个条目的上下文中更新组件?
How to update a component in the context of many entries?
我正在使用 JSF 2.2 和 primefaces 6.0
我有一个 table 这种形式
<table>
<tr>
<td rowspan="2">
Direction
</td>
<td colspan="#{etpBean.activites.size()}">
Activites
</td>
</td>
<td rowspan="2">
Controle
</td>
</tr>
<tr>
<ui:repeat var="activite" value="#{etpBean.activites}">
<td>
<h:outputText value="#{activite.nom}"/>
</td>
</ui:repeat>
</tr>
<ui:repeat value="#{etpBean.affectations}" var="affectation">
<tr>
<ui:repeat var="activite" value="#{etpBean.activites}">
<td rowspan="#{etpBean.affectations.size()}"><h:outputText value="#{affectation.structure.nom}" />
</td>
<td>
<p:inputText value="#{etpBean.getValeurActivite(affectation,activite).etp}" required="true">
<p:ajax listener="#{etpBean.onControleChange(affectation)}" update="controle" event="blur" />
</p:inputText>
</td>
<td>
<h:outputText id="controle" value="#{etpBean.message}"/>
</td>
</ui:repeat>
</tr>
</ui.repeat>
</table>
对于此 table 的每一行,我有许多相同类型的输入,在我的侦听器 onControleChange 中,我检索这些输入的值当我计算每个条目后的总和时,我想更新列controle if the sum more than 100 i want to put not ok else Ok.
这是onControleChange
public void onControleChange(Affectation affectation){
double somme=0;
for (ETP etp : etpss) {
if(etp.getAffectation().equals(affectation) && etp.getEtp() != null){
somme+=etp.getEtp();
}
affectation.setSomme(somme);
}
if(somme>100){
this.message="Not ok";
}else{
this.message="Ok";
}
}
但是当我 运行 我的 XHTML 出现这个错误
Grave: org.primefaces.expression.ComponentNotFoundException: Cannot find component for expression "controle" referenced from "form:j_idt77:0:j_idt94:0:j_idt96".
不知道是不是因为ui: repeat all of the column "contrôle" takes the same id.
有什么想法吗??
你试过了吗
<p:ajax listener="#{etpBean.onControleChange(affectation)}" process="@this" update=":#{p:component('controle')}" event="blur" />
我正在使用 JSF 2.2 和 primefaces 6.0
我有一个 table 这种形式
<table>
<tr>
<td rowspan="2">
Direction
</td>
<td colspan="#{etpBean.activites.size()}">
Activites
</td>
</td>
<td rowspan="2">
Controle
</td>
</tr>
<tr>
<ui:repeat var="activite" value="#{etpBean.activites}">
<td>
<h:outputText value="#{activite.nom}"/>
</td>
</ui:repeat>
</tr>
<ui:repeat value="#{etpBean.affectations}" var="affectation">
<tr>
<ui:repeat var="activite" value="#{etpBean.activites}">
<td rowspan="#{etpBean.affectations.size()}"><h:outputText value="#{affectation.structure.nom}" />
</td>
<td>
<p:inputText value="#{etpBean.getValeurActivite(affectation,activite).etp}" required="true">
<p:ajax listener="#{etpBean.onControleChange(affectation)}" update="controle" event="blur" />
</p:inputText>
</td>
<td>
<h:outputText id="controle" value="#{etpBean.message}"/>
</td>
</ui:repeat>
</tr>
</ui.repeat>
</table>
对于此 table 的每一行,我有许多相同类型的输入,在我的侦听器 onControleChange 中,我检索这些输入的值当我计算每个条目后的总和时,我想更新列controle if the sum more than 100 i want to put not ok else Ok.
这是onControleChange
public void onControleChange(Affectation affectation){
double somme=0;
for (ETP etp : etpss) {
if(etp.getAffectation().equals(affectation) && etp.getEtp() != null){
somme+=etp.getEtp();
}
affectation.setSomme(somme);
}
if(somme>100){
this.message="Not ok";
}else{
this.message="Ok";
}
}
但是当我 运行 我的 XHTML 出现这个错误
Grave: org.primefaces.expression.ComponentNotFoundException: Cannot find component for expression "controle" referenced from "form:j_idt77:0:j_idt94:0:j_idt96".
不知道是不是因为ui: repeat all of the column "contrôle" takes the same id.
有什么想法吗??
你试过了吗
<p:ajax listener="#{etpBean.onControleChange(affectation)}" process="@this" update=":#{p:component('controle')}" event="blur" />