java - 将参数传递给 ViewScoped Bean

标签 java jsf jsf-2 javabeans

我要将一个参数从一个页面 (Facelet) 传递到范围为 View 范围的托管 Bean。

我试着这样做:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class Mybean {
  private int id;


  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }    
}

第一页:

  <h:body>            
    <h:form>
      <h:commandLink value="click" action="index">
        <f:setPropertyActionListener target="#{mybean.id}" value="20"/>
      </h:commandLink>
    </h:form>
  </h:body>

第二页:

  <h:body>
    param value #{param.id}
    <br />
    bean value #{mybean.id}
    <br />

    <h:messages/>
  </h:body>

但是不显示20

最佳答案

@ViewScoped bean 只为用户正在观看的 View 保留。

一旦用户切换到另一个 View ——bean 就会被销毁并从头开始创建。 因此,如果您想为多个页面使用同一个 bean - 使用 @SessionScoped bean。

另一种方法是在 Java 中创建一个 Singleton 类,一个 bean 将更新此类中的值,而另一个 bean 将从中提取值。

关于java - 将参数传递给 ViewScoped Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4583968/

相关文章:

java - 为什么java每次生成的hash id集合几乎一样,调用System.gc()后却变多了?

java - JSF,将空值注册到绑定(bind)实例

servlets - 使用 JSF 2.0 通过重定向实现登录的正确方法是什么?

jsf-2 - 如何使用带有十进制值的 Primefaces slider 组件?

ajax - <h :inputText value not updating

java - 三元搜索树 - 迭代遍历

java - 无需调用 Session 对象上的 save() 方法即可持久保存对象

java - jsf 中 jsp .tag 文件的模拟是什么,或者如何避免复制和粘贴 jsf/facelets 代码?

java - jBPM 5.4 与 Tomcat 7 和 MySQL

jsf - 异常时不重定向到错误页面