Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PrimeFaces Ajax在整个应用程序中只调用一次_Ajax_Jsf_Primefaces - Fatal编程技术网

PrimeFaces Ajax在整个应用程序中只调用一次

PrimeFaces Ajax在整个应用程序中只调用一次,ajax,jsf,primefaces,Ajax,Jsf,Primefaces,我正在开发一个相当大的web应用程序。突然有一天,primefaces ajax只工作一次,然后就不再工作了 这个问题适用于整个应用程序中的所有primefaces ajax调用 我已经尝试了一切,甚至尝试用下面的代码在netbeans中创建一个新的jsf项目。同样,backbean方法只调用一次。我可以在scriptconsolen firefox中看到调用,但从未调用backbean方法,我没有得到任何错误 这是什么原因造成的?如果我将primefaces ajax调用替换为常规jsf aj

我正在开发一个相当大的web应用程序。突然有一天,primefaces ajax只工作一次,然后就不再工作了

这个问题适用于整个应用程序中的所有primefaces ajax调用

我已经尝试了一切,甚至尝试用下面的代码在netbeans中创建一个新的jsf项目。同样,backbean方法只调用一次。我可以在scriptconsolen firefox中看到调用,但从未调用backbean方法,我没有得到任何错误

这是什么原因造成的?如果我将primefaces ajax调用替换为常规jsf ajax,它就可以工作了

我的套装:

  • NetBeans 7.3
  • JSF2.2
  • PrimeFaces 3.5
  • 玻璃鱼3.1.2
我还尝试了以下设置,得到了相同的结果:

  • Netbeans 7.4
  • JSF2.2
  • PrimeFaces 3.5
  • 玻璃鱼4.0
add()仅在第一次单击时调用。 后座:

package temp;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name = "backbean")
@SessionScoped
public class Backbean implements Serializable{

    private int value = 0;
    private int temp = 0;

    public Backbean()
    {

    }

    public void setTemp(int temp)
    {
        this.temp = temp;
    }

    public int getTemp()
    {
        return temp;
    }

    public void add()
    {
       value += temp;
       temp = 0;
    }

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

    public int getValue()
    {
        return value;
    }


}
视图:



解决方案: 我尝试将primefaces 3.5替换为primefaces 4.0,然后处理ajax调用


为什么?

取决于您在这里试图实现的目标,如果您想使用JSF
h:commandButton
,那么将
p:ajax
替换为
f:ajax
,并将
操作=“{backbean.add()}”
添加到您的
h:commandButton
(删除了
监听器
)从
p:ajax
中,将
更新
替换为
渲染
并将
过程
替换为
执行

如果要使用
p:commandButton
,请删除
p:ajax
,并将
操作=“#{backbean.add()}”更新=“@form”process=“@form”
添加到
p:commandButton

一般而言:
纯粹出于好奇而使用
,为什么您仍然使用PrimeFaces 3.5?5.0是在几个月前发布的。是的,解决方案是使用更高版本的素数面,而不是重做依赖于3.5的图表
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>

    </h:head>
    <h:body>

            <h:form>
                <h:inputText value="#{backbean.temp}"/>
                <h:outputText value="#{backbean.value}"/>


                <h:commandButton value="Test" type="button">
                   <p:ajax listener="#{backbean.add()}"  update="@form" process="@form" />
                </h:commandButton>
            </h:form>

    </h:body>
</html>