所以我在尝试传递字符串值时遇到了问题。
字符串值作为用户名通过登录页面输入。
然后,JSF调用Bean来验证登录信息,然后转到另一个JSF页面。
我想知道如何将用户名传递给新的JSF页面。谢谢。
发布于 2012-12-11 04:17:51
如果你正在执行导航而不是重定向,那么你基本上不需要做任何事情。该信息也只在导航页面中可用。
例如在登录页面中,
<h:inputText value="#{bean.username}" />在导航的页面中:
<p>You have entered the following username: #{bean.username}</p>但是,如果您正在执行重定向而不是导航,那么您基本上需要在更大的范围内存储信息。您没有清楚地阐述问题中的具体功能需求,但如果我猜对了,您只是希望在HTTP会话的其余部分记住当前登录的用户。在这种情况下,只需在登录操作期间将其存储在session scope中即可。
public String login() {
// ...
User user = userService.find(username, password);
// ...
externalContext.getSessionMap().put("user", user);
// ...
return "nextpage?faces-redirect=true";
}这样,#{user}就可以在整个HTTP会话中使用它。
<p>You're logged in as #{user.name}.</p>发布于 2012-12-11 15:13:26
您也可以在不使用会话范围的情况下使用<t:saveState>。<t:saveState>长于请求作用域,但短于会话作用域。
这可能会对你有所帮助:http://myfaces.apache.org/tomahawk-project/tomahawk12/tagdoc/t_saveState.html
https://stackoverflow.com/questions/13808401
复制相似问题