我是JSF的新手,我正在做一些基本的事情来了解一个人应该如何使用它。在我的其中一个项目中,我有一个ManagedBean,SessionScoped如下所示
@ManagedBean(name="user")
@SessionScoped
public class User implements Serializable
// Having a couple of String properties (with setters and getters).
现在,在一个表单中的一个页面中,我有一个<h:inputText id="firstName" value="#{user.firstName}" ... />
,我希望从用户那里得到一个值并将它放在我的bean的属性中。第二页只显示输入数据,从bean访问它。 (<h:outputText value="${user.firstName}"/>
)。
问题是如果在那之后我进入第三页(只是输入URL)并且我试图使用相同的行再次显示来自bean的数据,则不会显示任何数据。我期待当bean是会话作用域时,它仍应在当前会话中可用。
答案 0 :(得分:8)
确保使用import javax.faces.bean.SessionScoped,而不是javax.enterprise ...;
答案 1 :(得分:0)
也许某人仍然对此感兴趣:我遇到了与上述相同的行为。最终解决方案是通过@Named替换@ManagedBean。到目前为止,我还没有弄清楚@ManagedBean注释的语义。所以我无法解释是什么造成了不同。