こんなアプリを作る

Java、HTML、Properties を併せて画面を作る

WicketLabelPackage.png

レタリングの仕方は5種類を試してみる

WicketLabelEn.png

フランス語、日本語、中国語対応

WicketLabelFr.png
WicketLabelJa.png
WicketLabelZh.png

wicket:message を使って、Properties ファイルから直接リソースを読み込み、HTMLのボタンのラベル名を変更する。

Java で、 Properties ファイルのリソースを読み込み、HTMLのボタンのラベル名を変更する。

wicket:message を使って、Properties ファイルから直接リソースを読み込み、HTMLのラベルに設定する。

Java で、現在のロケールの書式で日付を文字列化し、HTMLのラベルに設定する。

親画面のリソースを使う・プレイスホルダ付きのメッセージの扱い方。

ソースコード

LabelPage?.html

<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:wicket="http://wicket.apache.org/">
<head>
<title>Label Exam</title>
</head>
<body>
<form wicket:id="f"><img src="flag.gif" wicket:id="flag" /><br />
<p><select wicket:id="selectedLocale">
	<option value="0">XXXXX</option>
	<option value="1">YYYYY</option>
	<option value="2">ZZZZZ</option>
</select> <!-- レタリング時に、properties ファイルから直接タグ属性に値を代入
     したいときには、${タグ属性}:${propertyのkey} とする --> <input type="submit"
	wicket:id="changeButton" wicket:message="value:change" value="CHANGE" />

<!-- レタリング時に、LabelPage.java でタグ属性を埋め込む  --> <input type="submit"
	wicket:id="backButton" /></p>

<!--  レタリング時に、properties ファイルから直接値を代入する --> <wicket:message
	key="today-is">TODAY IS</wicket:message> <!-- レタリング時に、LabelPage.java で値を代入する -->
<span wicket:id="today">XXXX-XX-XX</span> <br />
<br />

<!--  親クラスのリソースを参照する --> <span wicket:id="placehold"
	style="color: green"> This label will be made by the properties
of the parent page </span></form>
</body>
</html>

LabelPageVO.java

package com.snail.wicket.exam.label;

import java.io.Serializable;

import java.util.LinkedList;
import java.util.List;
import java.util.Locale;

public final class LabelVO implements Serializable {
  private static final long serialVersionUID = -4718473278534052108L;

  private List<Locale> localeList;

  private Locale selectedLocale;

  public LabelVO() {
    localeList = new LinkedList<Locale>();
    localeList.add(Locale.FRENCH);
    localeList.add(Locale.JAPANESE);
    localeList.add(Locale.CHINESE);
    localeList.add(Locale.ENGLISH);
  }

  public void setLocaleList(List<Locale> localeList) {
    this.localeList = localeList;
  }

  public List<Locale> getLocaleList() {
    return localeList;
  }

  public void setSelectedLocale(Locale selectedLocale) {
    this.selectedLocale = selectedLocale;
  }

  public Locale getSelectedLocale() {
    return selectedLocale;
  }
}

LabelPage?.java (extends LabelParentPage?)

package com.snail.wicket.exam.label;

import com.snail.wicket.exam.MenuPage;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.StringResourceModel;

import java.text.DateFormat;

import java.util.Date;
import java.util.HashMap;


/**
 * DOCUMENT ME!
 *
 * @author $author$
 * @version $Revision$
 */
public class LabelPage extends LabelParentPage {
  /**  */
  private static final long serialVersionUID = 6938670271453979073L;

/**
   * Creates a new LabelPage object.
   */
  public LabelPage() {
    this(new LabelVO());
  }

/**
   * Creates a new LabelPage object.
   *
   * @param vo DOCUMENT ME!
   */
  public LabelPage(final LabelVO vo) {
    // ----- FORM
    Form f = new Form("f", new CompoundPropertyModel(vo)) {
        private static final long serialVersionUID = -637897867574833949L;

        @Override
        protected void onSubmit() {
          getSession().setLocale(vo.getSelectedLocale());
        }
      };

    add(f);

    // ----- COMBO BOX
    vo.setSelectedLocale(getSession().getLocale());

    DropDownChoice localeChoice = new DropDownChoice("selectedLocale",
        vo.getLocaleList());
    f.add(localeChoice);

    // ----- DATE TIME
    DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL,
        DateFormat.FULL, getSession().getLocale());
    f.add(new Label("today", df.format(new Date())));

    // ----- CHANGE BUTTON
    Button change = new Button("changeButton");
    f.add(change);

    // ----- BACK BUTTON
    Button back = new Button("backButton") {
        private static final long serialVersionUID = 3515590724694491832L;

        @Override
        protected void onComponentTag(ComponentTag tag) {
          // onComponentTag で、タグ属性を付け足す場合には
          // HTML に、目的のタグ属性が無くても良い
          // (タグ属性が作られる)
          super.onComponentTag(tag);
          tag.getAttributes().put("value", getString("back"));
        }

        @Override
        public void onSubmit() {
          System.out.println("BACK BUTTON PUSHED");
          setResponsePage(new MenuPage());
        }
      };

    f.add(back);

    // ----- COLORED LABEL (REFER THE PARENT PAGE'S PROPERTIES FILE)
    HashMap<String, String> argMap = new HashMap<String, String>();
    argMap.put("name", "Alice");

    String[] argArray = new String[] { "Bob", "Charry", "Dan" };

    // ResourceModel, StringResourceModel は、継承元(親)ページの
    // properties ファイルのエントリを引くことができる。
    // 
    // Place holder に入れる値は、Map ではなく Bean でも良い
    // (この場合 getName() が実装されていればよい)
    Label placeholdLabel = new Label("placehold",
        new StringResourceModel("angerMessage", this,
          new Model(argMap), argArray));

    // AttributeModel で、タグ属性を付け足す場合には
    // HTML に、目的のタグ属性が無くてはならない
    // (タグ属性が書き換えられる)
    placeholdLabel.add(new AttributeModifier("style",
        new ResourceModel("angerStyle")));

    f.add(placeholdLabel);

    // ----- FLAG
    Image flagImage = new Image("flag");
    f.add(flagImage);
  }
}

LabelPage?.properties

LabelParentPage?.java

package com.snail.wicket.exam.label;

import org.apache.wicket.markup.html.WebPage;

public class LabelParentPage extends WebPage {
  private static final long serialVersionUID = 8058824640942598408L;
}

LabelParentPage?.properties

angerStyle=color:red
angerMessage=Sit here until I say you can go, ${name}! {0}, {1} and {2}, too.

Java#Wicket


添付ファイル: fileWicketLabelJa.png 611件 [詳細] fileWicketLabelEn.png 733件 [詳細] fileWicketLabelPackage.png 692件 [詳細] fileWicketLabelZh.png 695件 [詳細] fileWicketLabelFr.png 672件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS   sitemap
Last-modified: 2008-03-20 (木) 21:32:30 (3184d)
ISBN10
ISBN13
9784061426061