【问题标题】:How to pass JSF value to from a backing bean to another backing bean?如何将 JSF 值从一个支持 bean 传递到另一个支持 bean?
【发布时间】:2015-01-17 06:23:51
【问题描述】:

我的问题是我想将一个值(登录用户的 ID)传递给一个页面。 以下代码显示了页面的链接

<h:form>
   <h:link outcome="Account">
       #{logging.username}
   </h:link>
</h:form>

所以我想在加载该页面时将“logging.id”传递给“Account”,我想将 id 传递给该帐户页面使用的另一个支持 bean。 那么这样做的方法是什么? 请帮帮我

【问题讨论】:

标签: jsf


【解决方案1】:

就我而言,登录用户是会话属性而不是请求/页面属性。

就此而言,您可以将 user.id 保存在 session 属性中,而不是通过 url 请求将其传递到另一个页面,而是从您需要它的任何支持 bean 从 session 中获取它。

示例:

public void login(String username, String password ){
  UserAccount account = myManagerBean.findUser(username, password);
  HttpSession session = getCurrentRequestFromFacesContext().getSession(false);
  session.addAttribute("user.account", account);
}

然后从任何其他支持 bean。

public UserAccount getUserAccount() {
  HttpSession session = getCurrentRequestFromFacesContext().getSession(false);
  return session.getAttribute("user.account");
}

但如果这就是您现在需要的,您可以将 id 作为请求参数传递:

<h:form>
   <h:link outcome="Account">
       <f:param name="user.username" value="#{logging.username}"/>
   </h:link>
</h:form>

然后您可以将其直接附加到请求范围 bean 的支持 bean 属性或从请求中手动检索它:

@RequestScope

public class MyAccountBean {

 @ManagedProperty("user.username")
 private String username;

 ... or ...
 public String getUserName() {
   return getCurrentRequestFromFacesContext().getParameter("user.username");
 }
}

【讨论】:

  • 非常感谢,它帮助了我:D
猜你喜欢
  • 2014-12-28
  • 2011-10-13
  • 1970-01-01
  • 2011-06-09
  • 2011-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-09
相关资源
最近更新 更多