jsf执行两次的问题
当登陆成功后,显示一个<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() 方法,改变了的数据源的值就是被他又覆盖了.
我想实现这个效果怎么办呢?
加载的时候执行
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() 方法,改变了的数据源的值就是被他又覆盖了.
我想实现这个效果怎么办呢?
...全文
相关推荐
JSF初学问题
这通常是由配置文件错误、页面配置不当或应用程序结构问题引起的。解决这类问题的关键在于仔细检查并修正上述提到的配置和代码。通过上述步骤,大多数情况下都能有效解决问题,让你能够顺利继续学习JSF。
JSF的工作方式 JSF架构 JSF模型 JSF事件类型
### JSF的工作方式JSF的工作流程可以分为六个主要阶段,这些阶段在每次用户请求时都会自动执行:1.
jsf规范
**JSF请求生成JSF响应**:这是最常见的场景,当用户通过JSF组件提交表单时,请求会映射到JSF实现的控制器,然后按生命周期的顺序执行,包括解析请求参数、更新模型值、执行验证和事件处理等。
JSF中文教程jsf
当用户与组件交互时,会触发特定的事件,相应的监听器方法会被调用,从而执行相应的处理逻辑。
jsf-api.jar jsf-impl.jar 等JAR包
它包含了JSF框架的实现细节,如渲染器、生命周期管理等。开发者在运行时依赖这个库来执行JSF应用的后端逻辑。3.


