我有下面的代码,边表中的任何组件都不会在ajax调用中更新。组件" lms-vouchers-error-div"和其他组件外部数据没有更新。我尝试了很多方法,但它不起作用。请帮忙。"表格"是表单id
<h:panelGroup id="lms-prestige-inner-div" layout="block"
styleClass="lmsPricePlanInnerDiv">
<table class="pricePlanTable">
<ui:repeat var="vo" value="#{orderOverviewBean.prestigeVouchers}"
varStatus="status">
<ui:fragment rendered="#{status.index > 0}">
<tr>
<td colspan="2">
<h2 class="#{vo.atLeastOneItemSelected ? 'remove' : 'redeem'}">
<span
class="#{vo.atLeastOneItemSelected ? 'removeline-center' : 'redeemline-center'}">or</span>
</h2>
</td>
</tr>
</ui:fragment>
<tr>
<td style="width: 302px">Voucher
#{status.index+1}.$#{-vo.amount} expires on
#{vo.expireDate}</td>
<td class="spanDisable"><h:commandLink value="> Redeem"
styleClass="removeUnderline" rendered="#{not vo.selected}"
disabled="#{vo.atLeastOneItemSelected}"
action="#{orderOverviewBean.addPrestigeVoucher}">
<f:setPropertyActionListener
target="#{orderOverviewBean.selectedVoucherItem}"
value="#{vo}" />
<f:ajax
render=":form:total-price-container :form:lms-vouchers-error-div :form:lms-prestige-div"
onevent="lmsVoucherDisplayLoader.displayLoader" />
</h:commandLink> <h:commandLink value="> Remove" styleClass="removeUnderline"
rendered="#{vo.selected}"
action="#{orderOverviewBean.removePrestigeVoucher}">
<f:setPropertyActionListener
target="#{orderOverviewBean.selectedVoucherItem}"
value="#{vo}" />
<f:ajax
render=":form:total-price-container :form:lms-vouchers-error-div :form:lms-prestige-div"
onevent="lmsVoucherDisplayLoader.displayLoader" />
</h:commandLink></td>
<ui:fragment rendered="#{vo.selected}">
<td style="width: 350px; text-align: right;">
-$#{-vo.amount}</td>
</ui:fragment>
</tr>
</ui:repeat>
</table>
</h:panelGroup>
答案 0 :(得分:0)
导致此类问题的常见错误是使ajax / updatable容器有条件地呈现:
即:如果您尝试使用ajax更新此容器:
<ui:fragment id="lms-vouchers-error-div" rendered="#{false_condition}"/>
即使渲染条件在您的ajax / update过程中变为true,它也不会被渲染,因为它不存在于您之前的html生成代码中,所以相反,尝试换行(在&#中) 39;始终可见包装容器&#39;)条件容器,<h:panelGroup/>
或使用primeface <p:outputPanel/>
即:
<h:panelGroup id="target_to_update_with_ajax">
<ui:fragment id="lms-vouchers-error-div" rendered="#{condition}"/>
</h:panelGroup>
这是一个可能适用于您的情况的建议,但如果您发布其余代码,则会更清楚。