超簡単なサンプル2(seleniumでテストを書くためにちょっと作成)
前回超簡単なサンプル(seleniumでテストを書くためにちょっと作成) - tomoTakaの日記のweb画面に入力項目を2つ追加。
- 最初の画面(ラジオボタンと、セレクトメニューを追加)
- 遷移後の画面(選択した言葉と言語で挨拶を表示)
JSFで画面を作成していますが、ラジオボタンや、セレクトメニューの画面表示ラベルと値をcontroller側ではenumを使用して実装。
ラジオボタンとセレクトメニューの組み合わせで「Hello java」とか「おはよう java」とか表示しているが、どうもすっきり実装できていない、、、
とりあえずtomoTaka01/HelloSample: JaveEE6 project wit... - GitHubにコードを保管。
詳細はまた来週末に記載予定。
画面表示しているLanguageセレクトメニューに3番目の言語を追加する場合、以下の実装クラスの★1、2、4カ所に修正が必要になるので★3のところで追加して、後はどこか実装をまとめたいが、、、
- Greet selectラジドボタンの実装
public enum GreetSelect { Hello("1", "Hello", "こんにちは"), // ★1Languageを増やすとパラーメータが必要 GoodMorning("2", "Good Morning", "おはよう") , GoodNight("3", "Good Night", "おやすみ") ; private final String value; private final String label; private final String japanesPhrase; // ★2Languageを増やすとここにも追加必要 private final String englishPhrase; GreetSelect(String value, String label, String japanesPhrase){ this.value = value; this.label = label; this.englishPhrase = label; this.japanesPhrase = japanesPhrase; } public SelectItem getSelectItem(){ return new SelectItem(this.value, this.label); }; public String getValue(){ return this.value; } public String getEnglishPhrase() { return englishPhrase; } public String getJapanesPhrase() { return japanesPhrase; } }
- Languageセレクトメニューの実装
public enum LanguageSelect { English("1", "English"), Japanes("2", "Japanes"); // ★3Languageをここで追加 private final String value; private final String label; private LanguageSelect(String value, String label) { this.value = value; this.label = label; } public SelectItem getLanguageItem() { return new SelectItem(this.value, this.label); } public String getValue() { return this.value; } }
- controller側の実装
@ManagedBean(name="HelloCtl") @SessionScoped public class HelloController { private static List<SelectItem> greetItems; private static List<SelectItem> languageItems; private static Map<String, GreetSelect> greetMap; static { initGreetItems(); initLanguageItems(); } private String name; private String greetSelect; private String languageSelect; public HelloController() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String doGreet(){ return "GreetingPage.xhtml"; } public String getGreeting(){ String phrase = getPhrase(); return phrase + " " + name; // ★「greet」ボタンクリック時にここの文言がh1タグに表示 } public String getGreetSelect() { return greetSelect; } public void setGreetSelect(String greetSelect) { this.greetSelect = greetSelect; } public String getLanguageSelect() { return languageSelect; } public void setLanguageSelect(String languageSelect) { this.languageSelect = languageSelect; } public List<SelectItem> getGreetItems() { return greetItems; } public List<SelectItem> getLanguageItems() { return languageItems; } private static void initGreetItems() { greetItems = new ArrayList(); greetMap = new HashMap(); for (GreetSelect sel : GreetSelect.values()) { greetItems.add(sel.getSelectItem()); greetMap.put(sel.getValue(), sel); } } private static void initLanguageItems() { languageItems = new ArrayList(); for (LanguageSelect sel : LanguageSelect.values()) { languageItems.add(sel.getLanguageItem()); } } private String getPhrase() { GreetSelect greetSel = greetMap.get(this.greetSelect); if (LanguageSelect.Japanes.getValue().equals(this.languageSelect)) { return greetSel.getJapanesPhrase(); } else { return greetSel.getEnglishPhrase(); } // ★4Languageを追加するとここにも追加必要 } }