[英]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.