页面重新加载或页面更改后会话Bean数据丢失

时间:2015-12-18 09:58:24

标签: jsf jsf-2

我正在使用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问题,还有办法解决这个问题吗?

0 个答案:

没有答案