问题是您在“onclick”方法中返回了一个值。假设你的call
js方法返回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... -->
通过此更改,如果您的call
js 方法返回 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>