2011-03-05 87 views
0

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

要显示h:datatable标记中的记录,我正在使用支持bean RecordSearchBean属性记录,如果该bean的搜索条件为空,它将获取记录。 RecordSearchBean由具有proerties:

FROM日期(用于搜索criertia) TODATE(用于搜索criertia) 记录(用于显示记录) fetchRecords()(方法来获得最近15个记录用户) searchRecords(动作事件E))

公示名单getRecentRecord({

如果(没有fromdate == NULL & & TODATE == NULL)(由JSF页面上的搜索按钮调用){ this.records = fetchRecords() ; } return this.records; }

公开名单fetchRecords(){// 代码来获取的记录 }

公共无效searchRecords(ActionEvent的五){ 列表//代码来获得基于搜索条件的记录 列表searchedRecords = getREcords(本); this.records = searchingRecords; }

此RecordSearchBean在请求范围内。

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

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

有一个主页当用户点击这个标签时,他将得到15条记录的清单,这些记录在他登录时显示给用户。

我认为这个propeblem是与jsf托管bean范围相关的。如果我将更改bean的范围,然后数据库的最后一列中的每个链接都正常工作。

如用户会点击主页上那么他将无法获得的,当他在。

登录请帮我,他已经得到了记录列表的话。

回答

0

我认为问题可能(如您已经陈述)与RequestScoped有关。如果你点击一个链接,Bean将被新实例化,所有的属性将被重置。

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