在我的 JSF + Richfaces 应用程序中,我观察到 Rich:datascroller 在我从不同的 a4j:region 发出 ajax 请求时被执行。这是我的代码:
<jsfc:view>
<a4j:region renderRegionOnly="true">
<a4j:form>
<a4j:region renderRegionOnly="true">
<jsfh:selectOneMenu id="selectOneMerchant" value="#{smsTrafficBean.page}">
<a4j:support event="onchange" ajaxSingle="true"/>
<jsfc:selectItem itemValue="a" itemLabel="a"/>
<jsfc:selectItem itemValue="b" itemLabel="b"/>
</jsfh:selectOneMenu>
</a4j:region>
</a4j:form>
</a4j:region>
<a4j:region renderRegionOnly="true">
<jsfh:form>
<a4j:region renderRegionOnly="true">
<rich:datascroller id="scroll_1" for="sms" page="#{smsTrafficBean.page}"/>
<rich:dataTable id="sms" var="s" value="#{smsTrafficBean.smsByFilter}">
</rich:dataTable>
</a4j:region>
</jsfh:form>
</a4j:region>
</jsfc:view>
当用户从 selectOneMenu 中选择项目时,ajax 请求被触发到服务器。在生成对该请求的响应期间,执行了 smsTrafficBean.smsByFilter 方法,这不是我所期望的。当我删除 rich:datascroller 一切正常。
有没有人知道为什么在从不同的 aj4:region 触发 ajax 请求时在调用 smsTrafficBean.smsByFilter 时添加rich:datascroller 组件效果?