簡體   English   中英

首次點擊后,Ajax + JSF點擊2次

[英]Ajax + JSF 2 times clicking after the first click

我有一個dataTable,其中有一個名為DELETE的列(它是一個鏈接),它有一個監聽器。 當我第一次單擊它(單擊1)時,它會刪除該行(如預期的那樣),但是當我嘗試使用另一行后,沒有任何反應(單擊2)。 事實上無論我在哪里點擊下一步都沒有發生。 我應該點擊另一次(點擊3)讓它工作。 我不希望這樣。

注意:“單擊2”后未到達my_user中的“delete()”方法。

以下是該列的代碼:

<h:column>
    <f:facet name="header">#{lng.del}</f:facet>
    <h:form>
        <h:commandLink action="#">
            <f:ajax event="click" listener="#{my_user.delete}" render="@all" />
            <h:graphicImage name="delete.png" library="images" styleClass="tableIcon" />
        </h:commandLink>
    </h:form>
</h:column> 

你在表格中有多個表格。 當您通過ajax從表單內部重新呈現另一個表單時,其視圖狀態將會丟失,因此第一次單擊將失敗。 但是,此單擊會使表單返回視圖狀態,因此第二次單擊會起作用。

從技術上講,您只需要重新呈現其他表單的內容,但在此特定用例中這是不可能的。 最好將<h:form>放在<h:dataTable>以便您擁有一個具有共享視圖狀態的表單。

<h:form>
    <h:dataTable>
        ...
    </h:dataTable>
</h:form>

如果您的頁面也包含其他表單,我建議僅渲染當前表單而不是全部表單,否則對這些表單的任何操作也將失敗。

<f:ajax event="click" listener="#{my_user.delete}" render="@form" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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