提交后出现JSF + richfaces问题
我需要为某个项目制作一个搜索页面。 输入字段:提交后出现JSF + richfaces问题
<h:inputText styleClass="field35" value="#{searchBean.country}"></h:inputText>
<h:inputText maxlength="20" styleClass="field35" value="#{searchBean.destination}"></h:inputText>
<rich:calendar datePattern="dd/MM/yyyy" value="#{searchBean.startDate}"></rich:calendar>
<rich:calendar datePattern="dd/MM/yyyy" value="#{searchBean.endDate}"></rich:calendar>
后,我按:
<h:commandButton id="cb41" action="#{searchBean.processForm}" value="Search" styleClass="button" />
我预计结果在同一页上rich:dataTable
部分进行打印。
<rich:dataTable value="#{searchBean.results}" var="journey">
在processForm
方法的结果变量填充来自数据库和用户数据被转发到同一页面。
第一次搜索后一切正常,但当我再次搜索时,bean和页面输入字段之间的绑定丢失。换句话说,在国家,目的地,startData和endDate的processForm方法中,无论页面上的相应字段是什么,我都只获得空值。
bean的范围是请求,所有字段都有getter和setter。
有没有人有一个想法可能是什么问题?
谢谢。
编辑: 感谢T-EDD 更改范围会议的工作,但是这是一个有点性能杀手,以保持整个豆会话中的所有的时间(和复杂每次删除我离开通缉页) 。我明白为什么这个bean被销毁了,但是在下一个请求之后,我不应该创建一个新的请求,并且我的页面有适当的值?
看来你需要
<t:saveState value="#{searchBean}" />
添加到您的网页。
该控制器在请求之间保存bean的状态(它提供了在视图的组件树内存储模型值的功能)。
这样它的数据将被保存,而不需要改变bean的会话范围(我不推荐)
你也可以使用
<a4j:keepAlive beanName="searchBean"/>
就是这样。非常感谢。 – Klark 2011-02-03 12:11:18
我认为问题在于bean的请求范围。你是否在每次请求后加载数据?如果不是那么它很清楚,值是空的。尝试会话范围或者你就必须从服务中获取数据或elswere ..
编辑:
这里后您的控制器的代码,没有它,我不能有太大帮助。无需将bean放入会话范围即可解决此问题。简而言之:您需要使用gettres和setter将数据存储在请求之间的bean属性中。
感谢t-edd,我更新了我的问题,所以请好起来,并尝试帮助我多一点:) – Klark 2011-02-02 21:53:46
我不同意把会话范围中的bean是性能杀手!它是什么 - 它只是坚持你的bean在服务器上的每个用户会话的生命周期,这需要一些资源,但我不认为它的问题。当用户会话过期时bean被丢弃。 – Eduard 2011-02-03 08:29:03