フォーカスを失ったときに内容をチェックするテキストフィールドを作ってみた。以下のプログラムではテキストフィールドがフォーカスを失ったときの内容がhttp://で始まっていなければエラーメッセージを表示するもの。http://で始まってるならエラーメッセージを消去する。Wicketのバージョンは1.4-m3
まずはHTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <form wicket:id="form"> <input type="text" wicket:id="field" /> <span wicket:id="label" style="color:red">エラーメッセージ</span> </form> </body> </html>
上のHTMLに対応したJavaのソース
package textfield; 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.TextField; import org.apache.wicket.model.Model; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; public class TextFieldTest2 extends WebPage{ public TextFieldTest2(){ Form form = new Form("form"); final TextField<String> field = new TextField<String>("field", new Model<String>("")); final Label label = new Label("label", new Model<String>()); label.setOutputMarkupId(true); field.add(new AjaxFormComponentUpdatingBehavior("onblur"){ @Override protected void onUpdate(AjaxRequestTarget target){ if(field.getModelObject() == null || !field.getModelObject().startsWith("http://")){ label.setDefaultModelObject("http://ではじめてください"); }else{ label.setDefaultModelObject(""); } target.addComponent(label); } }); form.add(field); form.add(label); add(form); } }
アプリケーションクラスとweb.xmlは省略。