0

所以我在尝试传递字符串值时遇到问题。

字符串值通过登录页面作为用户名输入。

然后 JSF 调用 Bean 来验证登录信息,然后进入另一个 JSF 页面。

我想知道如何将用户名传递到新的 JSF 页面。谢谢你。

4

2 回答 2

6

如果您正在执行导航而不是重定向,那么您基本上不需要做任何事情。该信息也仅在导航页面中可用。

例如在登录页面,

<h:inputText value="#{bean.username}" />

并在导航页面中:

<p>You have entered the following username: #{bean.username}</p>

但是,如果您执行的是重定向而不是导航,那么您基本上需要将信息存储在更广泛的范围内。您没有明确阐述问题中的具体功能要求,但如果我猜对了,您只是想记住当前登录的用户以完成剩余的 HTTP 会话。在这种情况下,只需在登录操作期间将其存储在会话范围内。

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-10T20:17:50.830 回答
2

您也可以<t:saveState>在不使用会话范围的情况下使用。<t:saveState>比请求范围长但比会话范围短。

这可能对您有所帮助:http: //myfaces.apache.org/tomahawk-project/tomahawk12/tagdoc/t_saveState.html

于 2012-12-11T07:13:26.473 回答