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

时间:2016-01-14 21:12:40

标签: jsf richfaces ajax4jsf

环境:

Jboss 7.1.1.Final JSF 2.2.6 Seam 2.3.1.Final Richfaces 4.5.10.Final

问题

渲染上的Richfaces 4 extendeddatatable不保存值(下面列出的示例中的资源下拉列表)。

步骤:

  1. 首先,我从资源下拉列表中选择一个值
  2. 然后我从Result下拉列表中选择一个值,触发a4j:ajax call
  3. 我的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渲染发生后如何保留所选值的正确方向吗?

1 个答案:

答案 0 :(得分:0)

我找到了一种方法来通过在资源下拉列表中更改值后立即使用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>