【问题标题】:How to update a component in the context of many entries?如何在多个条目的上下文中更新组件?
【发布时间】:2017-09-26 14:55:07
【问题描述】:

我正在使用 JSF 2.2 和 primefaces 6.0

我有一个这种形式的表格

        <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>

对于该表的每一行,我有许多相同类型的输入,在我的侦听器 onControleChange 中,我检索这些输入的值,因为我在每个条目之后计算总和,如果总和超过,我想更新列 controle 100 我想放不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:重复所有列“contrôle”采用相同的id。

有什么想法吗??

【问题讨论】:

标签: primefaces jsf-2 el


【解决方案1】:

你试过了吗

<p:ajax listener="#{etpBean.onControleChange(affectation)}" process="@this" update=":#{p:component('controle')}" event="blur" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2021-02-09
    • 2017-09-12
    • 2021-11-16
    • 2020-08-08
    • 1970-01-01
    • 2020-03-18
    相关资源
    最近更新 更多