簡體   English   中英

表外的JSF Ajax組件更新不起作用

[英]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
                            &nbsp;#{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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM