<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函数请帮帮我。
答案 0 :(得分:1)
问题是你在“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>