当社Webサイト

カテゴリー

Amazonサーチ

  • 09/29
    post by 武輪 恭代 @ 2009 年 9 月 29 日 17:20 Java, Wicket

    ども、武輪です。

    前回のWicket小話で、Confirmメッセージを出すにはどうすればよいのか?と言った話をしたのですが、今回も引き続きConfirmメッセージの話をしたいと思います。

    前回、AjaxボタンでConfirmメッセージを表示する方法として、Wicket-extensionのコンポーネントであるModalWindowを使い、独自のポップアップメッセージを表示する方法をとりました。
    しかしながら、これってぶっちゃけConfirmメッセージじゃないよね…!

    というわけで今回はAjaxボタンで正真正銘(?)のConfirmメッセージを表示する方法をご紹介します。

    AjaxボタンでConfirmメッセージ

    >Ajaxで中身を入れ替える以上、onclickアトリビュートをいじるのはややこしそうなので…

    と前回書いたのですが、
    「confirmで確認後、OKだったら既存AjaxのJavaScriptを実行してあげて、キャンセルだったらfalseを返す」
    ようなJavaScriptを書けば問題ないんじゃ…?と思いまして。

    そんなわけでさらっとサンプルを書いてみました。
    サンプルは前回同様、ボタンを押した時に確認メッセージを表示し、OKだったらカウントする、キャンセルだったら何もしない、といった仕様です。

    Confirm2.java

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    public class Confirm2 extends WebPage{
     
    	private int count = 0;
    	private Label result;
     
    	/**
    	 * コンストラクタ
    	 */
    	public Confirm2() {
    		add(result = new Label("result", new PropertyModel<Integer>(this, "count")));
    		result.setOutputMarkupId(true);
    		Form<?> form = new Form<Confirm2>("form");
     
    		form.add(new AjaxButton("count", new Model<String>("カウントしますか?")){
     
    			private static final long serialVersionUID = 1L;
     
    			@Override
    			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
    				count++;
    				target.addComponent(result);
    			}
     
    			@Override
    			protected IAjaxCallDecorator getAjaxCallDecorator() {
    				return new AjaxPreprocessingCallDecorator(super.getAjaxCallDecorator()) {
    					private static final long serialVersionUID = 1L;
     
    					@Override
    					public CharSequence preDecorateScript(CharSequence script) {
    						return "if(!confirm('" + getModelObject() + "')) return false;" + script;
    					}
    				};
    			}
    		});
    		add(form);
    	}
    }

    【メモ】
    25~34行目付近:
    AjaxButtonのgetAjaxCallDecoratorをオーバライドしてあげることで、出力されるAjax用JavaScriptに手を加えています。

    実際に出力されるhtmlは以下のようになります。

    onclick="if(!confirm('カウントしますか?')) return false;var wcall=wicketSubmitFormById('form2', ';[長いので略]"
    

    まとめ

    というわけで、AjaxButtonでも前回みたいな似非確認ダイアログではなくちゃんとした(?)Confirmメッセージを出すことができました。
    AjaxButtonを記述する度にgetAjaxCallDecorator()をオーバライドするのも面倒なので、AjaxButtonを継承したサブクラスを作っておくのが便利そうです。

    動作環境

    今回のサンプルソースは以下の環境で動作させています。

    バージョン
    JDK 1.6.0_13
    Apache Tomcat 6.0.16
    Apache Wicket 1.4.0

    あわせて読みたい

    Tags:

  • 09/04
    post by 武輪 恭代 @ 2009 年 9 月 4 日 11:35 Java, Wicket

    ども、武輪です。

    Webアプリケーションでは、データを登録したり編集したり削除したりといった操作が日常茶飯事です。
    そして「削除ボタンを押した時にいきなり削除するのではなく、confirmメッセージを出す」というのはよくあるパターンですね。

    さてWicket小話その2では、「Wicketで確認メッセージを出すにはどうすればよいのか?」について、実際のコードを踏まえて試してみようと思います。

    [続きを読む...]

    Tags:

  • 08/31
    post by 武輪 恭代 @ 2009 年 8 月 31 日 17:35 Java, Wicket

    ども、武輪です。

    Wicket小話と題しまして、Wicket初心者の私がWicketを使ってみて、

    • これちょっと便利な機能だなー
    • こんなコンポーネントを使ってみたよ!
    • こんな実装やってみたよ!

    などなど。
    そんなちょっとしたメモ書きを徒然と残していこうと思います。

    基本的に情報はWebと書籍「オープンソース徹底活用 WicketによるWebアプリケーション開発」(矢野勉さん著)から得ています。
    あとはWicketのソースとか。

    さてWicket小話その1として、「とりあえずWicketを始めよう」という副題で徒然と書いていきます。

    [続きを読む...]

    Tags: ,

  • 08/07
    post by 武輪 恭代 @ 2009 年 8 月 7 日 18:00 コラム

    こんにちは、武輪です。

    私は自宅でDELLのInspiron9400というノートPCを使っていまして。
    彼これ何年くらいですかね、結構長く使っているんですけども。

    先日の朝ですね、寝起きに寝惚けたままで本をぽんとその上に投げてしまったわけです。
    そしたらなんか引っかかったらしく…

    Shiftキーが吹っ飛んだ

    Shiftキーが吹っ飛んだ\(^o^)/

    [続きを読む...]

    Tags: , , , ,

  • 06/10
    post by 武輪 恭代 @ 2009 年 6 月 10 日 15:41 JSF, Java

    はじめまして。
    プロダクト&サービス事業部の武輪です。

    Ajaxと言えば、JavaScriptをごりごり書かないと!ってイメージがあるのですが、JavaScriptを少し書くだけ、もしくはまったく書かずに、コンポーネント側で勝手にやってくれれば簡単ですよね。
    Ajaxを用いたJSFコンポーネントやフレームワークって他にも、RichFacesやらajax4jsfやらICEfacesやらがあるのですけども、今回私は、OpenFacesというJSFコンポーネントを紹介したいと思います。

    OpenFacesは2009年5月末に出てきたばかりのAjaxを用いたJSFコンポーネントです。
    サイトからはfaceletsで実装されたサンプルとJSPで実装されたサンプルをダウンロードすることができます。

    早速、faceletsで実装されたサンプルを動かしてみました。

    [続きを読む...]

    Tags: , , ,