您的位置:首页 > 编程语言 > Java开发

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

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

解决问题的思路:

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

view plain

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

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

view plain

<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: