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

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

DropDownChoiceを使ってみる

特に作りたいものがないのでDropDownChoiceを使ってみた。WicketJavaDocに書いてある内容をそのまま使った感じだけど、自分で実際に書いてみたかったので作った。

DropDownTest.html

<html>
    <head>
        <title>DropDownTest</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    </head>
    <body>        
        <form wicket:id="form">
            <select wicket:id="choice">
                <option>テスト1</option>
                <option>テスト2</option>
            </select>
            <input type="submit" value="選択" wicket:id="submit"/>
        </form>
        
        <span wicket:id="yourChoice">あなたが選んだのはテスト1です</span>
    </body>
</html>

DropDownTest.java

package dropdown;

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

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Button;

import org.apache.wicket.model.Model;

public class DropDownTest extends WebPage{
    public DropDownTest(){
        //submitボタンを押したときにDropDownChoiceで選んだ項目を表示するラベル
        final Label label = new Label("yourChoice", new Model());
        Form form = new Form("form");
        
        //DropDownChoiceに表示させるリスト
        List testList = Arrays.asList(new String[]{"テスト1", "テスト2", "テスト3"});
        final DropDownChoice choice = new DropDownChoice("choice", new Model(), testList);
        
        Button submitButton = new Button("submit"){
            @Override
            public void onSubmit(){
                String selectedText = choice.getModelObjectAsString();
                
                //選択しないままボタンを押したときは何もしない
                if(selectedText.isEmpty())
                    return;
                
                String text = "あなたが選んだのは";
                text += selectedText;
                text += "です";
                label.setModelObject(text);
            }
        };
        
        add(label);
        form.add(choice);
        form.add(submitButton);
        add(form);
    }
}

DropDownApplication.java

package dropdown;

import org.apache.wicket.protocol.http.WebApplication;

public class DropDownApplication extends WebApplication{
    public Class getHomePage(){
        return DropDownTest.class;
    }
}

web.xmlに追加するフィルタマッピング

    <filter>
        <filter-name>DropDownTest</filter-name>
        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
        <init-param>
            <param-name>applicationClassName</param-name>
            <param-value>dropdown.DropDownApplication</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>DropDownTest</filter-name>
        <url-pattern>/dropdown/*</url-pattern>
    </filter-mapping>