2

我正在使用p:remoteCommand,它工作正常updateprocess除了它不调用任何action方法也不actionListener

Xhtml代码

<h:form id="mainForm">
   <h:outputLabel id="tempAge" value="#{remoteBean.tempAge}"/>

   <h:inputText id="age" value="#{remoteBean.age}" onkeypress="callRem()">
      <f:validateLongRange minimum="18"/>
   </h:inputText>

   <script type="text/javascript">
     var timex=0;
     function callRem(){
    clearTimeout(timex);
    timex = setTimeout("remote()",2000);
      }
   </script>

   <p:remoteCommand     name="remote" 
            process="age" 
            update="tempAge"
            action="#{remoteBean.act}" 
            actionListener="#{remoteBean.listen}">
   </p:remoteCommand>

</h:form>

托管 Bean 代码

@ManagedBean
public class RemoteBean {
    private int age=18;
    private int tempAge=20;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
        System.out.println("Setting age :"+age);
    }
    public int getTempAge() {
        return tempAge;
    }
    public void setTempAge(int tempAge) {
        this.tempAge = tempAge;
    }

    public void act(){
        System.out.println("in action()");
        tempAge+=age+2;
    }

     public void listen(ActionEvent event) {
         System.out.println("in Action Listener");
         tempAge+=age+2;
     }

}

我不知道我在哪里做错了,可能是我写的 Javascript 代码。
如果有人面临并解决了同样的问题,请提供帮助。

使用:Primefaces 3.5

4

1 回答 1

11

我试过你的例子,发现问题。似乎当您只处理年龄(process =“age”)时,它只执行年龄输入并忽略 remoteCommand actionListener 和 action。因此,您可以将其更改为:

process="@form" 

或者

process="@this age" 

两者都为我工作。

附言。我在这里使用了查看范围。

于 2013-09-06T08:21:09.743 回答