jsf执行两次的问题

lyb_abiandbel 2008-05-18 12:56:42
当登陆成功后,显示一个<h:dataTable id="table" value="#{userBean.users}" var="u" border="1">

加载的时候执行
private DataModel users = new ListDataModel();

public DataModel getUsers() throws UserException {
users.setWrappedData(this.getUserService().browse());//显示所有数据
return users;
}

public void setUsers(DataModel users) {
this.users = users;
}

我也知道由于JSF生命周期的原因getUsers()会被执行两次.

问题来了,我想当登陆成功后,显示所有数据.然后我设置一个按纽,输入查询条件,
<h:commandButton value="#{msgs.select}"
action="#{userBean.selectAction}" />//查询按纽
<h:inputText id="money" value="#{userBean.user.money}"> //查询条件
</h:inputText>



public String selectAction() throws UserException {
List list = this.getUserService().select(this.user.getMoney());
System.out.print(this.user.getMoney());
System.out.print(list.size());
if (list.size() > 0)
users.setWrappedData(list); //我改变了数据源的值,没有用
return null;
}

查了Hibernate sql语句:
00:50:56,046 INFO [STDOUT] Hibernate: select user0_.ID as ID0_, user0_.NAME as NAME0_, user0_.PASSWORD as PASSWORD0_, user0_.MONEY as MONEY0_ from USER user0_
00:50:56,093 INFO [STDOUT] Hibernate: select user0_.ID as ID0_, user0_.NAME as NAME0_, user0_.PASSWORD as PASSWORD0_, user0_.MONEY as MONEY0_ from USER user0_ where user0_.MONEY=? //selectAction已经起作用了,但是被下面的覆盖了.
00:50:56,109 INFO [STDOUT] 1000
00:50:56,109 INFO [STDOUT] 12
00:50:56,140 INFO [STDOUT] Hibernate: select user0_.ID as ID0_, user0_.NAME as NAME0_, user0_.PASSWORD as PASSWORD0_, user0_.MONEY as MONEY0_ from USER user0_ //生命周期最后执行了getUsers() 方法,改变了的数据源的值就是被他又覆盖了.

我想实现这个效果怎么办呢?
...全文
101 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
老紫竹 2008-05-19
  • 打赏
  • 举报
回复
重复问题,看另一个的回复

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧