我正在使用httpsession测试一个简单的登录,因此在我对用户进行身份验证后,我将一个用户属性添加到http会话中:
@ManagedBean
@SessionScoped
public class loginView {
....
public String connect() {
FacesContext context = FacesContext.getCurrentInstance();
if (authenticated) {
context.getExternalContext().getSessionMap().put("user", login);
return "/home/NewFile?faces-redirect=true";
} else {
context.addMessage(null, new FacesMessage("Unknown login, try again"));
login = "";
pwd = "";
return null;
}
}
}
当我从登录视图调用此函数时,它会重定向到NewFile.xhtml
,因为它应该这样做。在所述xhtml内部,我使用"user"
显示#{user}
属性。到目前为止一切正常,但是当我刷新页面(NewFile.xhtml
)或当我重定向到另一个页面并尝试显示"user"
属性我得到null时,是否需要这种行为?刷新或重定向会创建另一个httpsession吗?或者只是删除我添加的属性?
答案 0 :(得分:1)
<h:button outcome="view.logout()"/>
结果outcome
执行了加载页面之前的功能,所以我不得不将其更改为<p:commandButton action="view.logout()"/>