gpt4 book ai didi

javascript - Ajax + JSF 第一次点击后点击2次

转载 作者:行者123 更新时间:2023-12-02 20:05:54 25 4
gpt4 key购买 nike

我有一个数据表,其中有一个名为 DELETE 的列(它是一个链接),它有一个监听器。当我第一次单击它时(单击 1),它会删除该行(如预期),但是当我尝试使用另一行时,没有任何反应(单击 2)。事实上,无论我点击下一步什么都没有发生。我应该再单击一次(单击 3)才能使其正常工作。我不想这样。

注意:“click 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 从表单内部重新渲染另一个表单时,其 View 状态将丢失,因此第一次单击将失败。但是,此单击会注意表单恢复 View 状态,因此第二次单击有效。

从技术上讲,您只需要重新渲染其他表单的内容,但在这个特定的用例中这是不可能的。最好把<h:form><h:dataTable>这样您就有了一个具有共享 View 状态的表单。

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

如果您的页面还包含其他表单,我建议仅呈现当前表单而不是全部表单,否则这些表单上的任何操作也会失败。

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

关于javascript - Ajax + JSF 第一次点击后点击2次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7419212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com