フォームの扱い
Webアプリケーションに欠かせないHTMLのフォーム。Wicketでフォームを扱うための方法を今回は紹介する。
フォームは,inputタグなどのいくつかの入力要素から構成される。GUIアプリで言えば,フォームはコンポーネントが登録されるコンテナだ。Wicketでは,フォームを扱うために,Formクラスが提供されている,Formクラスは,Wicketコンポーネントのコンテナとして機能する。
HTMLのフォームは,formタグで表される。通常は,action属性によりサブミットがかけられたときのリクエストURLを指定する。では,Wicketにおけるフォームの書き方から見ていこう。
・・・
Wicketにおけるformタグには,基本的にはwicket:id属性でIDを指定するだけで良い。そして,formタグの子要素として,入力要素を記述していく。ここでは,サブミットボタンを設置している。サブミットボタンについては,フォームに1つだけの設置であれば,wicket:id属性は必要ない。あってもいいけど。
このPOHPに対するJavaコードだが,ここではこのページをEmployeePageとして考えると,以下のような感じになる。
public class EmployeePage extends WebPage { public EmployeePage() { super(); add(new EmployeeForm()); } private class EmployeeForm extends Form { public EmployeeForm() { super(“employeeForm”); } public void onSubmit() { // サブミット時の処理を記述 } } }
内部クラスとして,Formクラスを継承したEmployeeFormクラスを作成している。WebPageクラスのコンストラクタ内で,addメソッドを使ってEmployeeFormオブジェクトを登録している。EmployeeFormクラスのコンストラクタでは,親のコンストラクタにフォームのID文字列を渡している。上記の例では,POHP内でwicket:id属性を使って指定した”employeeForm”を指定することによって対応付けを行っている。
フォーム内に入力要素があるときには,Formクラスのサブクラスのコンストラクタ内で,Wicketコンポーネントをaddメソッドを使って登録していけばよい。
フォームに対してサブミットがかけられたときには,onSubmitメソッドが呼び出される。onSubmitメソッド内で,サブミット時の処理を行えばよい。非常に簡単,単純である。
さて,これを実行したときには,上記のPOHPは実際には以下のような感じになる。
・・・
action属性を見ると,何やらいろいろと書かれているが,Wicketが自動で書いていることなので,普通は気にする必要はない。onSubmitメソッドにやりたいことを記述するだけである。