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 扩展数据表不包含该值(下面列出的示例中的资源下拉列表)。
步骤:
- 首先我从“资源”下拉列表中选择一个值
- 然后我从触发 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>
环境:
Jboss 7.1.1.Final JSF 2.2.6 接缝 2.3.1.Final Richfaces 4.5.10.Final
问题
呈现的 Richfaces 4 扩展数据表不包含该值(下面列出的示例中的资源下拉列表)。
步骤:
- 首先我从“资源”下拉列表中选择一个值
- 然后我从触发 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>