[英]JSF ajax component update outside table does not work
我有下面的代碼,表外的任何組件都不會在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>
導致此類問題的常見錯誤是有條件地渲染ajax /可更新容器:
即:如果您嘗試使用ajax更新此容器:
<ui:fragment id="lms-vouchers-error-div" rendered="#{false_condition}"/>
即使使用ajax / update過程將呈現的條件更改為true,也不會呈現它,因為它在先前的html生成的代碼中不存在,因此,請嘗試包裝(在“始終可見的包裝容器”中)您的條件容器,帶<h:panelGroup/>
或者如果您使用質數<p:outputPanel/>
即:
<h:panelGroup id="target_to_update_with_ajax">
<ui:fragment id="lms-vouchers-error-div" rendered="#{condition}"/>
</h:panelGroup>
這是一個建議,可能適合您的情況,但是如果您發布其余代碼,則將更加清楚。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.