有关spring中bean的@Scope 和richfaces 中表单分页的处理方式

冲突情景:

     在spring的中vew controller bean 如果用@Controller标签进行定义。缺省的Scope是session的。这样用户在界面上输入的内容一直保留。如果使用@Scoper来强制定义成request,那么可以解决这个问题。但是这个时候使用<rich:dataTabel>和<rich:datascroller>进行前台分页。就会无法显示第二个页面。因为这个组件使用了session。

 

解决问题的思路:

1.仍然保持每个controller的bean 的@Scpoer。例如

@Controller("detailQuery2Bean") @Scope("request") public class DetailQuery2Bean implements Serializable { }

2.在前台的xhtml文件中强制指定某个具体的bean的@Scope使用session。注意下面代码中的<a4j:keepAlive beanName="detailQueryBean"/> 语句

 

<rich:dataTable id="resultTable" value="#{detailQueryBean.result}" var="row" reRender="ds" rows="20"> <rich:column style="text-align:center" mce_style="text-align:center" sortBy="#{row.sgfssj}"> <f:facet name="header"> <h:outputText value="事故发生时间" /> </f:facet> <h:outputText value="#{row.sgfssj}" /> </rich:column> <rich:column style="text-align:center" mce_style="text-align:center" sortBy="#{row.severityNo}"> <f:facet name="header"> <h:outputText value="事故等级" /> </f:facet> <h:outputText value="#{row.severityNo}" /> </rich:column> <rich:column style="text-align:left" mce_style="text-align:left"> <f:facet name="header"> <h:outputText value="事故形态" /> </f:facet> <h:outputText value="#{row.formNo}" /> </rich:column> <rich:column style="text-align:left" mce_style="text-align:left"> <f:facet name="header"> <h:outputText value="事故原因" /> </f:facet> <h:outputText value="#{queryHelperBean.mapReasons[row.reasonNo]}" /> </rich:column> <rich:column style="text-align:left" mce_style="text-align:left" sortBy="#{row.lm}"> <f:facet name="header"> <h:outputText value="LM" /> </f:facet> <h:outputText value="#{row.lm}" /> </rich:column> <f:facet name="footer"> <rich:datascroller id="ds"></rich:datascroller> </f:facet> </rich:dataTable>

你可能感兴趣的:(有关spring中bean的@Scope 和richfaces 中表单分页的处理方式)