richfaces 4 extendeddatatable 在 ajax 渲染后不显示更新的数据

richfaces 4 extendeddatatable not showing updated data after ajax render

环境:

Jboss 7.1.1.Final JSF 2.2.6 接缝 2.3.1.Final Richfaces 4.5.10.Final

问题

呈现的 Richfaces 4 扩展数据表不包含该值(下面列出的示例中的资源下拉列表)。

步骤:

  1. 首先我从“资源”下拉列表中选择一个值
  2. 然后我从触发 a4j:ajax 调用的结果下拉列表中选择一个值

我的 XHTML 结构如下:

<a4j:region id="hraregion">
    <rich:extendedDataTable id="hraProcessing"
        value="#{maActionList}" var="mpa" selectionMode="single">

        <h:column width="200px">
            <f:facet name="header">
                <h:outputText value="Resource" />
            </f:facet>
            <h:selectOneMenu id="staffResources" value="{mpa.staffResources}" label="Resource"
                <s:selectItems value="#{mpa.validStaffResources}" var="sr" label="#{sr.firstName} #{sr.lastName}"/>
                <s:convertEntity />
            </h:selectOneMenu>
        </h:column>
        <rich:column width="140px">
            <f:facet name="header">
                <h:outputText value="Result" />
            </f:facet>
            <h:selectOneMenu id="results" value="#{mpa.actionResults}">
                <a4j:ajax execute="region"  listener="#{maintainAssessment.performNextAction(mpa, 'mpa')}" render="hraProcessing, actionMessage" />
                <s:selectItems value="#{mpa.validActionResults}" var="ar" label="#{ar.name}" noSelectionLabel="Select One" />
                <s:convertEntity />
            </h:selectOneMenu>
        </rich:column>
    </rich:extendedDataTable>
</a4j:region>

注:

我们正在从 Richfaces 3.3 迁移到 4.5,此功能在 Richfaces 3.3 中运行良好,但当然整个页面在 3.3 中刷新,而不是在 Richfaces 4.5 中部分刷新

有人可以指出正确的方向,告诉我如何在 a4j 渲染发生后保留所选值吗?

我找到了一种方法来完成此操作,方法是在资源下拉列表中的值更改后立即使用 f:ajax 更新辅助 bean。希望这对面临同样问题的人有所帮助。

<h:selectOneMenu id="staffResources" value="#{mpa.staffResources}"
    label="Resource" styleClass="LFloat">
    <s:selectItems value="#{mpa.validStaffResources}" var="sr"
    label="#{sr.firstName} #{sr.lastName}"/>
    <s:convertEntity />
    <f:ajax event="valueChange" execute="@this" render="@none"/>
</h:selectOneMenu>