Ajax更新无法在JSF中增加计数器bean

时间:2017-06-25 17:54:16

标签: ajax jsf

我开始使用JSF和PrimeFaces 6.1编写代码 我的index.xhtml看起来像:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class CounterBean implements Serializable {

    private int count = 0;

    public void increment() {
        count++;
    }

    public int getCount() {
        return count;
    }
    public void setCount(int name) {
        this.count = name;
    }
}

CounterBean.java是:

{{1}}

即使我看到inputText和outputText的小部件显示,但是当inputText的值发生变化时,没有进行ajax调用。 类似地,当inputText改变时,outputText的值也不会改变。

以上代码有什么问题?

1 个答案:

答案 0 :(得分:2)

你遗失了两件事, :<h:head></h:head>将包含所需的JavaScript库, 并且您需要将输入包装在h:form

<?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:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
<h:head></h:head>
<h:body>
    <h:form>
        <h:inputText id="counter">
            <p:ajax update="out" listener="#{counterBean.increment}"/>
        </h:inputText>
        <h:outputText id="out" value="#{counterBean.count}"/>
    </h:form>
</h:body>
</html>