0

データテーブルにこの列があり、ユーザーがテストした入力で1文字を追加または削除するたびに検証したい:

<p:column headerText="Quantité" style="width:20%">
                        <p:cellEditor>
                            <f:facet name="output">
                                <h:outputText value="#{arti.qte}" />
                            </f:facet>
                            <f:facet name="input">
                            <h:panelGroup>
                                    <p:inputText 
                                    value="#{arti.qte}"   >
                                <p:ajax event="keyup" listener= "#{mvmtdepotMB.keyupQte}" />
                                <f:validateDoubleRange minimum="0.1" maximum="#{arti.qtemax}"  />
                                </p:inputText>
                                <p:message  for="qdf" />
                            </h:panelGroup>

                            </f:facet>
                        </p:cellEditor>
                    </p:column>

しかし、keyup メソッドは呼び出されず、検証も行われません。

どうすればそれを達成できますか

4

1 に答える 1

2

次の内部で keyup イベントを検出する必要がありますp:inputText

<p:inputText value="#{arti.qte}" onkeyup="validate()"/>

そして、これは次を実行しp:remoteCommandます:

<p:remoteCommand name="validate" actionListener="#{mvmtdepotMB.keyupQte}"/>

p:remoteCommandの外側に置きp:dataTableます。

パラメータをに渡したい場合p:remoteCommand

onkeyup="validate([{name: 'name1', value: 'value1'}, {name: 'name2', value: 'value2'}]);"

また、p:remoteCommandactionListener は次の方法でこれらを取得できます。

FacesContext context = FacesContext.getCurrentInstance();
Map map = context.getExternalContext().getRequestParameterMap();
String name1 = (String) map.get("name1");
String name2 = (String) map.get("name2");
于 2013-04-24T20:24:23.560 に答える