問題は、「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>