Struts2でbeforeNotifyTopicsをしたい、そんなとき

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中によくあるぐるぐる回るアイコンを表示しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>