0

我的数据表中有这一列,每次用户在我测试的输入中添加或删除一个字符时,我都想验证它:

<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'}]);"

actionListenerp:remoteCommand可以通过以下方式检索这些:

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