1

我对 PrimeFaces 组件发送的第一个ajax 请求有疑问。它发生在很多情况下,所以我尝试做一个非常小的例子。我的 xhtml 文件如下:

<html
    xmlns="http://www.w3c.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

<h:head>
    <title>Remote Command Tutorial</title>
</h:head>
<h:body id="body">
    <h:outputScript library="primefaces" name="jquery/jquery.js" target="head" />

    <h:form id="form">
        <h:inputText  converter="javax.faces.Integer" id="input" value="#{remoteCommandBean.value}"></h:inputText>

        <script type="text/javascript">
            function increment() {
                var value = parseInt($("#form\\:input").val())+1 ;

                $("#form\\:input").val(value) ;
            }
        </script>

        <h:commandButton type="submit"  onclick="increment()" update="input">
            <f:ajax></f:ajax>
        </h:commandButton>

<p:commandButton type="submit"  onclick="increment()" update="input"/>
    </h:form>
</h:body>
</html>

和托管bean:

package test;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class RemoteCommandBean implements Serializable {
    private static final long serialVersionUID = 1L;
    private int value = 0;

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }
}

因此,小应用程序包含一个绑定到托管 bean 属性的输入字段,并且有两个命令按钮:第一个是标准 JSF 按钮,第二个是 PrimeFaces 命令按钮。他们都调用了一个javascript方法,该方法增加了输入字段中的数字,并且(希望)发送了一个ajax请求以刷新bean属性,然后响应再次刷新该字段,并使用相同的数字。我的问题是,当我第一次按下 PrimeFaces 按钮时,它没有正确刷新数字,实际上它的值仍然是初始的 0。第二次单击后,一切正常,标准按钮不会出现此问题。我检查了(在 Chrome 中)第一个请求和以下请求之间的区别,我发现了以下内容:

第一个请求:

form:input:1
form_SUBMIT:1
javax.faces.partial.ajax:true
javax.faces.source:form:j_idt9
javax.faces.partial.execute:@all
javax.faces.partial.render:form:input
form:j_idt9:form:j_idt9

第二:

form:input:1
form_SUBMIT:1
javax.faces.ViewState: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
javax.faces.partial.ajax:true
javax.faces.source:form:j_idt9
javax.faces.partial.execute:@all
javax.faces.partial.render:form:input
form:j_idt9:form:j_idt9

我们使用 Glassfish 3.1.2、PrimeFaces 3.2 和 Apache-MyFaces 2.0.2。

有人可以帮我吗?

烟雾三合会

4

0 回答 0