preInvokeJSがないという現実にうちのめされてもたくましく立ち上がろう。
私たちにはbeforNotifyTopicsが与えられているのだから。
そんなとき。
コードをのせます。
< %@ taglib prefix="s" uri="/struts-tags" %>
< %@ taglib prefix="sx" uri="/struts-dojo-tags" %>
・・・・・
" style="display:none"/>
削除
解説します。
<s:urlで、削除用urlを生成させてて、delete_urlにセットさせています。
この例題では、削除のリンク(aタグ=<sx:a)をクリックするとこのdelete_urlにformからpostメソッドでsubmitすることになります。
したがって、formにふくまれているすべてのパラメータがpostされます。
hiddenで入っているidも渡されます。
もちろん、delete_urlにクエリパラメータをつけてもいいと思います。
beforeNotifyTopicsは、削除前の確認ダイアログの表示に使っています。
削除のリンク(aタグ=<sx:a)をクリックすると、hrefで設定されたdelete_urlに対して、submitを行う前にbeforeNotifyTopicsに設定されている”/before”トピックが実行されます。
“/before”トピックは、dojo.event.topic.subscribe(“/before”,で設定しています。
つまり、削除のリンク(aタグ=<sx:a)をクリックすると、submit前にダイアログが表示されて、キャンセルすればそこで処理が終わり、OKを押すとdelete_urlに対して、submitが行われるというわけです。
afterNotifyTopicsは、post-after-redirect を行うために設定しています。二重投稿防止です。
submitが行われた後に、今度は、afterNotifyTopicsに設定されている”/after”トピックが実行されます。
“/after”トピックは、dojo.event.topic.subscribe(“/after”,で設定しています。
つまり、削除のリンク(aタグ=<sx:a)をクリックすると、submit前にダイアログが表示されて、キャンセルすればそこで処理が終わり、OKを押すとdelete_urlに対して、submitが行われ、その後、location.href=”<s:url namespace=”/” action=”home”/>”;によって、/homeにリダイレクトされるというわけです。
ちなみに、loading_imgをつかって、submit中によくあるぐるぐる回るアイコンを表示しています。