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