所以我在尝试传递String值时遇到了问题。JSF to Bean to JSF
字符串值是通过登录页面输入的用户名。
然后JSF调用Bean来验证登录信息,然后进入另一个JSF页面。
我想知道如何将用户名传递给新的JSF页面。谢谢。
所以我在尝试传递String值时遇到了问题。JSF to Bean to JSF
字符串值是通过登录页面输入的用户名。
然后JSF调用Bean来验证登录信息,然后进入另一个JSF页面。
我想知道如何将用户名传递给新的JSF页面。谢谢。
如果您正在执行导航而不是重定向,那么您基本上不需要执行任何操作。这些信息也仅在导航页面中提供。
E.g.在登录页面,
<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";
}
这种方式在整个HTTP会话中都可以使用#{user}
。
<p>You're logged in as #{user.name}.</p>
非常好!这显示了如何为一个显然很差的问题提供丰富的答案。 – prageeth
谢谢你的回应。我最终在与多个页面相关的bean中放置了很多会话范围。由于它看起来非常矮胖,我很确定有一个更简单的方法来做到这一点。但这是一个开始,非常感谢。 – user1892752
如果这些页面无法独立存在,那么您应该使用一个带有条件渲染内容的页面和一个视图范围的bean。 – BalusC
您还可以在不使用会话作用域的情况下使用<t:saveState>
。 <t:saveState>
比请求范围长,但比会话范围更短。
这可能会帮助你:http://myfaces.apache.org/tomahawk-project/tomahawk12/tagdoc/t_saveState.html
你已经试过了什么?你得到的错误是什么?如果您展示已采取的步骤,更多人将能够为您提供帮助。请参阅如何问一个[好问题](http://stackoverflow.com/questions/how-to-ask)。 – Nick