1
<a4j:commandLink onclick="return call();" action="#{bean.deleteUser(all_user.userID)}" reRender="viewUserGrid">
<h:graphicImage style="border-style:none;" url="/images/delete.jpg"  height="10px" />
</a4j:commandLink>

问题是在支持bean中没有调用deleteUser方法为什么会这样。但是它正在调用javascript函数请帮助我。

4

1 回答 1

1

问题是您在“onclick”方法中返回了一个值。假设你的calljs方法返回true或者false,代码必须改成:

<a4j:commandLink onclick="if (!call()) return false;"
    action="#{bean.deleteUser(all_user.userID)}"
    reRender="viewUserGrid" limitToList="true">
    <h:graphicImage style="border-style:none;" url="/images/delete.jpg"  height="10px" />
</a4j:commandLink>

进一步说明:

为您的实际代码生成的 HTML 代码将如下所示(或类似的内容):

<a href="#" id="formName:j_id45351"
    name="formName:j_id22"
    onclick="return call(); A4J.AJAX.Submit('formName',event, '');">
<!-- the rest of the HTML generated code... -->

如果您看到,该return call();方法位于 的开头onclick,因此不会调用 ajax 提交。通过我提供的更新代码,代码将类似于:

<a href="#" id="formName:j_id45351"
    name="formName:j_id22"
    onclick="if (!call()) return false; A4J.AJAX.Submit('formName',event, '');">
<!-- the rest of the HTML generated code... -->

通过此更改,如果您的calljs 方法返回 false,则不会提交 ajax 调用,如果返回 true,则将进行您的 ajax 调用。请注意,如果 javascript 方法不返回任何值,则默认情况下将返回 false。


更新:建议的代码将适用于 RichFaces 3.x。如果您使用 RichFaces 4.x 您的 commandLink 应如下所示

<a4j:commandLink onclick="if (!call()) return false;"
    action="#{bean.deleteUser(all_user.userID)}"
    render="viewUserGrid">
    <h:graphicImage style="border-style:none;" url="/images/delete.jpg"
        height="10px" />
</a4j:commandLink>
于 2012-08-23T14:48:33.917 回答