为什么当我在jboss EAP 6.3上启动我的JSF2应用程序时,它没有在inputText中显示我在Managed Bean中设置的值?

时间:2015-10-08 15:28:27

标签: jsf-2 jboss

我在JSF2.2应用程序中有一个简单的file.xhtml,它的代码是:

<!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:f="http://xmlns.jcp.org/jsf/core"
  xmlns:h="http://xmlns.jcp.org/jsf/html"

xmlns:ez="http://xmlns.jcp.org/jsf/composite/ezcomp">

<head>
<title>Insert title here</title>
</head>
<body>
<f:view>
<h:form id="greeting">

<h:inputText id="num1" value="#{jSFeatBean.num1}"  />

<h:inputText id="num2" value="#{jSFeatBean.num2}"/>
<h:commandButton type="submit"
   value="Submit"
   action="#{jSFeatBean.addNumbers()}"/>
<h:outputText value="#{jSFeatBean.result}"/>!

</h:form>

</f:view>
</body>
</html>

这是我的@ManagedBean:

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


@ManagedBean(name = "jSFeatBean", eager = true)
@SessionScoped
public class JSFeatursBean {

private String result; 
public int num1 = 1;
int num2;





public int getNum1() {
    return num1;
}

public void setNum1(int num1) {
    this.num1 = num1;
}

public int getNum2() {
    return num2;
}

public void setNum2(int num2) {
    this.num2 = num2;
}

public String getResult() {
    return result;
}

public void setResult(String result) {
    this.result = result;
}

public Object addNumbers() {
        setResult("il risultato e': "+ Integer.toString(num1+num2));
    return null;
}
}

从Eclipse启动jboss后,浏览器正确显示我的file.xhtml的所有元素,但第一个(id = num1)inputText中的值为0而不是1.为什么会发生这种情况?如果我在inputText框中添加新值一切正常,所以我认为Mbean已实例化并正常工作。 我有一个h:SelectOneListbox元素有同样的问题,它没有显示我调用MBean构造函数时创建的列表。 看起来MBean在显示html页面后立即进行了实例化。

1 个答案:

答案 0 :(得分:0)

代码看起来很好,只有一件事可能导致问题。

尝试删除ManagedBean批注中的“eager = true”属性。 “eager = true”仅适用于ApplicationScoped Beans。