- 2011年3月11日 12:42 AM
- Java
Teedaのラジオボタンは通常、String型でPageクラスに定義します。
http://teeda.seasar.org/ja/extension/reverse/input.html#%E3%83%A9%E3%82%B8%E3%82%AA%E3%83%9C%E3%82%BF%E3%83%B3_%E9%9D%99%E7%9A%84
が、そこを列挙型(Enum)することができます。こちらの方が型安全になっていいかなと思います。
もちろん、静的・動的両方いけます。
以下、サンプルです。
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:te="http://www.seasar.org/teeda/extension" xml:lang="ja"
lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Enumのサンプル</title>
</head>
<body>
<form id="Form">
<span id="allMessages"></span>
<h1>ラジオボタン(静的)</h1>
<div id="sex">
<label><input type="radio" name="sex" value="MALE" />男性</label>
<label><input type="radio" name="sex" value="FEMALE" />女性</label>
</div>
<h1>ラジオボタン(動的)</h1>
<input type="hidden" id="languageItemsSave" />
<span id="language">
<input type="radio" name="language" />
</span>
<p><input type="submit" value="送信" id="doSubmit" /></p>
</form>
</body>
</html>
列挙型
public enum Sex {
MALE("男性"),
FEMALE("女性");
private String japaneseName;
private Sex(String japaneseName) {
this.japaneseName = japaneseName;
}
public String getJapaneseName() {
return japaneseName;
}
}
public enum Language {
JAPANESE("日本語", "JAPANESE", "こんにちわ"),
ENGLISH("英語", "ENGLISH", "Hello");
private String label;
private String value;
private String greeting;
private Language(String label, String value, String greeting) {
this.label = label;
this.value = value;
this.greeting = greeting;
}
public String getLabel() {
return label;
}
public String getValue() {
return value;
}
public String getGreeting() {
return greeting;
}
}
Pageクラス
public class EnumSamplePage {
public Sex sex;
public Language language;
public List<Language> languageItems;
public Class<?> initialize() {
// 初期値の設定
sex = Sex.FEMALE;
language = Language.ENGLISH;
languageItems = new ArrayList<Language>();
for (Language lang : Language.values()) {
languageItems.add(lang);
}
return null;
}
public Class<?> prerender() {
return null;
}
public Class<?> doSubmit() {
System.out.println(sex.getJapaneseName());
System.out.println(language.getGreeting());
return null;
}
}
注意としては、
静的なラジオボタンで使う場合は、value属性に“列挙子”を指定すること(サンプルだと「MALE」「FEMALE」)
静的なラジオボタンで使う場合は、列挙型のフィールドに“label”と“value”を変数名にもつ値を定義すること。
あと、HTMLにhidden属性に”~~ItemsSave”を配置すること。これをしないとPOSTしたときにデータが消えてしまう(これはString型でも同じですが)
- Newer: WTPのTomcat7.0でDataSource(PostgreSQL)からConnectionを取得する
- Older: livedoor Reader をJavaから操作する何か作った
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://sinsengumi.net/blog/2011/03/teeda%e3%81%ae%e3%83%a9%e3%82%b8%e3%82%aa%e3%83%9c%e3%82%bf%e3%83%b3%e3%81%abstring%e5%9e%8b%e3%81%a7%e3%81%af%e3%81%aa%e3%81%8f%e5%88%97%e6%8c%99%e5%9e%8b%ef%bc%88enum%ef%bc%89%e3%82%92%e4%bd%bf/trackback/
- Listed below are links to weblogs that reference
- TeedaのラジオボタンにString型ではなく列挙型(Enum)を使う from sinsengumi血風録