【问题标题】:JSF command buttonJSF 命令按钮
【发布时间】:2011-07-09 06:46:36
【问题描述】:

我有一个页面,当用户登录时,他将显示他最近创建的 15 条记录的列表。jsf 页面有两种形式,一种形式是搜索条件和命令按钮的字段很少。另一种形式是有一个数据表,它将获取记录并显示它。在数据表的最后一列中,根据状态显示了一些链接。

为了在 h:datatable 标记中显示记录,我使用了一个支持 bean RecordSearchBean 属性记录,如果该 bean 的搜索属性为空,它将获取记录。 RecordSearchBean 具有属性:

fromDate(用于搜索条件) toDate(用于搜索条件) 记录(用于显示记录) fetchRecords()(获取用户最近15条记录的方法) searchRecords(ActionEvent e)(由jsf页面上的搜索按钮调用)

公开列表 getRecentRecord(){

if(fromDate==null && toDate == null){ this.records=fetchRecords(); } 返回 this.records; }

公开列表 fetchRecords(){ //获取记录列表的代码 }

公共无效搜索记录(ActionEvent e){ //根据搜索条件获取记录的代码 列出 searchedRecords=getREcords(this); this.records=搜索记录; }

这个 RecordSearchBean 在请求范围内。

我在 jsf 中所做的是当用户登录时,他将获取由 records 属性填充的记录并显示在数据表中。

当用户点击 jsf 页面上的搜索按钮时,records 属性将由 searchRecords actionlistener 填充。 到那时一切正常,但是当我点击记录最后一列中数据表提供的任何链接时,我再次获得用户登录时显示的记录列表。

菜单中有一个主页选项卡,当用户单击该选项卡时,他将获得15条记录的列表,该列表在用户登录时显示给用户。

我认为这个问题与 jsf 托管 bean 范围有关。如果我将更改 bean 的范围,那么 databale 最后一列中的每个链接都可以正常工作。

在这种情况下,如果用户点击主页,那么他将不会得到他登录时获得的记录列表。

请帮帮我。

【问题讨论】:

    标签: jsf


    【解决方案1】:

    我认为问题可能(正如您已经说过的)与RequestScoped 有关。如果您单击一个链接,该 Bean 将被新实例化并且所有属性都将被重置。

    尝试改用ViewScoped 并在单击主页选项卡时将fromDatetoDate 重置为null。在 ViewScope 中,如果您通过从方法返回 null 重新加载同一页面,则不会重新实例化 Bean。

    【讨论】:

      猜你喜欢
      • 2017-10-04
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 2010-10-13
      • 2014-07-21
      • 2013-06-07
      相关资源
      最近更新 更多