マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

PropertyModelの式

http://wicket.apache.org/docs/1.4/org/apache/wicket/util/lang/PropertyResolver.htmlに書いてあることだけど、PropertyModelの式は配列やリスト、マップにも使えるとのこと。まず、試しにリストで試してみる。書式はproperty.index又はproperty[index]で出来るらしい。今回はproperty[index]の方を使ってみた。

import java.util.Arrays;
import java.util.List;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.PropertyModel;

public class PropertyModelTestPage extends WebPage{
    List<String> data = Arrays.asList(new String[]{"Hello", "World"});

    public PropertyModelTestPage(){
        Label label = new Label("label", new PropertyModel<String>(this, "data[1]"));
        add(label);
    }
}

これで、ラベルにWorldが表示されるようになった。次にMapで試してみる。書式はproperty.key又はproperty[key]で出来るらしい。今回はproperty[key]で試してみた。

import java.util.Map;
import java.util.HashMap;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.PropertyModel;

public class PropertyModelTestPage extends WebPage{
    Map<String, String> data = new HashMap<String, String>();

    public PropertyModelTestPage(){
        data.put("Hello", "ハロー");
        data.put("World", "ワールド!");

        Label label = new Label("label", new PropertyModel<String>(this, "data[World]"));
        add(label);
    }
}

これで、ラベルにはワールド!と表示された。ちなみに、今回の式のことは『WicketによるWebアプリケーション開発』の70ページにも同じことが書いてある。