当登陆成功后,显示一个<h:dataTable id="table" value="#{userBean.users}" var="u" border="1"><br /><br />加载的时候执行<br />private DataModel users = new ListDataModel();<br /><br /> public DataModel getUsers() throws UserException {<br /> users.setWrappedData(this.getUserService().browse());//显示所有数据<br /> return users;<br /> }<br /> <br /> public void setUsers(DataModel users) {<br /> this.users = users;<br /> }<br /><br />我也知道由于JSF生命周期的原因getUsers()会被执行两次.<br /><br />问题来了,我想当登陆成功后,显示所有数据.然后我设置一个按纽,输入查询条件,<br /><h:commandButton value="#{msgs.select}"<br /> action="#{userBean.selectAction}" />//查询按纽<br /> <h:inputText id="money" value="#{userBean.user.money}"> //查询条件<br /> </h:inputText><br /><br /><br /><br />public String selectAction() throws UserException {<br /> List list = this.getUserService().select(this.user.getMoney());<br /> System.out.print(this.user.getMoney());<br /> System.out.print(list.size());<br /> if (list.size() > 0)<br /> users.setWrappedData(list); //我改变了数据源的值,没有用<br /> return null;<br /> }<br /><br />查了Hibernate sql语句:<br />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_<br />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已经起作用了,但是被下面的覆盖了.<br />00:50:56,109 INFO [STDOUT] 1000<br />00:50:56,109 INFO [STDOUT] 12<br />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() 方法,改变了的数据源的值就是被他又覆盖了.<br /><br />我想实现这个效果怎么办呢?<br />