繁体   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