托管bean作为托管属性

时间:2010-05-24 17:11:55

标签: jsf

我在WebSphere 6.1上使用JSF 1.1。我正在应用程序中构建搜索功能,并且遇到了一些问题。我已经删除了附加内容,并留下了以下内容:

4个托管bean:

  • SearchController - Controller bean,会话范围
  • SearchResults - 会话范围(存储结果)
  • ProductSearch - 会话范围(存储搜索条件)
  • ResultsBacking - 用于DataTable的Backing bean,用于确定单击了哪一行,请求范围

SearchController bean作为托管属性具有其他3.除ResultsBacking之外的所有内容都是会话作用域。

如果搜索结果中只有1个项目,我想直接调出该记录。我在ResultsBacking方法中为数据表调用setFirst(0)(我想使用处理单击哪个项的现有方法,因此在setFirst之后调用它)。

当我去做另一次搜索时,在数据表中调用getRowData时会出现IllegalArgumentException。根据api,如果现在(原文如此)行数据在当前指定的行索引处可用,则抛出此内容。

我很困惑为什么会这样。它第一次工作,但不是第二次工作。我是否需要在新搜索中删除ResultsBacking以摆脱旧状态?

1 个答案:

答案 0 :(得分:0)

在我的支持bean中的getFirstRow方法中,我在数据库上调用了setFirst(0)。将此更改为setRowIndex(0)可以解决问题。