当登陆成功后,显示一个<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() 方法,改变了的数据源的值就是被他又覆盖了.我想实现这个效果怎么办呢?