0

当我将操作方法​​中的参数发送到另一个页面时,我无法从第二类中读取它们。

page1.xhtml:

....
<h:commandLink action="#{mbean1.gotoMessageDetail(msg)}" value="#{msg.caption}"/>
....

托管bean1

@ManagedBean(name = "mbean1")
@RequestScoped
public class MBean1 {
 ....
 public String gotoMessageDetail(Message msg) {
    //do some work
    retrun "page2.xhtml?param1=val1&param2=val2";
  }
}

在第二类 MBean2 中,我尝试使用以下代码块获取参数,但我无法获取我发送的参数。

@ManagedBean(name = "mbean2")
@ViewScoped
public class MBean2{
   ...
  HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
  param1=Long.parseLong(request.getParameter("param1")==null ? "0" : request.getParameter("param1"));
  param2=Long.parseLong(request.getParameter("param2")==null ? "0" : request.getParameter("param2"));
}

param1 和 param2 为空。如何从 mbean1 的操作方法中获取 param1 和 param2。

4

1 回答 1

0

会不会是这个错字retrun?编辑并重试。

@ManagedBean(name = "mbean1")
@RequestScoped
public class MBean1 {
 ....
 public String gotoMessageDetail(Message msg) {
    //do some work
    return "page2.xhtml?param1=val1&param2=val2";
    /////retrun to return
  }
}

供您参考,您可以使用@ManagedProperty注释将属性从一个 ManagedBean 注入到另一个。在另一个 ManagedBean 上拥有属性意味着您不需要传递任何参数。

看看在 JSF 2.0 中注入托管 bean

于 2012-07-02T01:06:10.160 回答