我正在使用Wildfly 8 Server和jsf 2.2开发JSF项目。
我有一个带有xhtml的web部件和带有模型等的bean + ejb部件和一个mysql数据库。
模型的一部分(EJB部分):Foo.java
String name = "";
Object Foo2 = new Foo2();
模型的一部分(EJB部分):Foo2.java
private static final long serialVersionUID = 1L;
String name = "";
现在我输入如下:input.xhtml
<f:metadata>
<f:event listener="#{ InputBean.init() }" type="preRenderView" />
</f:metadata>
<h:inputText
value="#{ InputBean.actualFoo.name }">
</h:inputText>
<h:selectOneMenu
value="#{InputBean.currentSelectedFoo2_ID}">
<f:selectItems value="#{InputBean.lhm_AllFoo2}" />
</h:selectOneMenu>
和bean:InputBean.java
@SessionScoped
@ManagedBean(name = "InputBean")
public class InputBean implements Serializable
private static final long serialVersionUID = 1L;
private Long currentSelectedFoo2_ID;
private LinkedHashMap<String, Object> lhm_AllFoo2;
private Foo actualFoo;
public InputBean() {
lhm_AllPermissions = new LinkedHashMap<String, Object>();
actualFoo = new Foo();
}
public void init()
// Method of interface in EJB part which gives me all Foo2 to a list
List<Foo2> list_AllFoo2 = foo2Interface.getAllFoo2;
if ((list_AllFoo2 != null) && (list_AllFoo2.size() > 0)) {
for (Foo2 foo2 : list_AllBFoo2) {
lhm_AllFoo2.put(foo2.getName(), foo2.getId());
}
}
当我在inputField中输入数据并选择数据selectonemenu然后重新加载页面(f5)或更改到另一页面(同一项目)并返回输入字段中的数据仍然可用但selectonemenu是重置为默认值。
我试图调试问题,但是在访问init时数据已经丢失,之前没有调用bean的setter。构造函数也没有调用,所以一切似乎都是正确的。未链接到输入的bean数据也不会丢失。
这是一个正常的JSF问题,还有办法解决这个问题吗?