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ページにも同じことが書いてある。