2

我正在使用 JSF 2.0 框架,我需要帮助。说得尽可能简单,我需要的是获取用户username和 id 并将其显示在我正在构建的应用程序中。

这是我的 UserBean 类:

@ManagedBean
@SessionScope
 public class UserBean implements Serializable {
 private static final long serialVersionUID = 1L;
 private int id;
 private String username;
 private String password;
 //getter and setter methods

index.xhtml页面上,用户需要输入用户名和密码才能登录(比较数据库中的值)。当他这样做时,我想在下一页上输出他的用户名和 ID,并在整个应用程序中跟踪它。

4

3 回答 3

2

UserBean已经会话范围内。您根本不需要自己“跟踪”它。如果您需要在视图中显示任意 JSF 托管 bean 的属性,只需以通常的方式在 EL 中访问它们。

<p>Welcome, #{userBean.username}!</p>

如果您需要将其注入其他 bean,因为您需要在 postconstructor 或 (action)listener 方法中提供用户信息,那么只需使用@ManagedProperty.

@ManagedBean
@RequestScoped
public class OtherBean {

    @ManagedProperty("#{userBean}")
    private UserBean userBean; // +setter

    // ...
 }

也可以看看:

于 2012-09-19T13:39:37.640 回答
0

如果您想直接获取会话数据表单页面。如下使用。

   <h:outputText value="#{sessionScope.UserBean.username}"/>
   <h:outputText value="#{sessionScope.UserBean.id}"/>
于 2012-09-19T09:08:50.727 回答
-1

因为用户名和 id 在会话范围的 bean 中。您可以像这样从会话映射中获取它们。

page2.XHTML

<h:outputText value="#{page2Bean.uname}"/>
<h:outputText value="#{page2Bean.id}"/>


Page2Bean.java
@managedBean(name="page2Bean")
class Page2Bean {
private String uName;
private int id;
//getters and setters 
public page2Bean() {
UserBean uBean = (UserBean)     (FacesContext.getCurrentInstance().getExternalContext().getSessionMap()).get("userBean"));// get the UserBean which is in the session
 this.uName= uBean.getUserName();
this.id= uBean.getId();

}

编辑 您在构造函数中获取会话数据(在这种情况下为用户名和 id)并将它们分配给您在 page2.xhtml 中使用的属性

让我知道它是否有帮助...

于 2012-09-19T08:27:44.930 回答