最初にフォーカスが移ったときに表示されている文字列を消すテキストフィールドを作ってみた。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" /> </form> </body> </html>
次に上のHTMLに対応したJavaのソース
package textfield; import org.apache.wicket.markup.html.WebPage; 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 TextFieldTest extends WebPage{ boolean isFirst = true; public TextFieldTest(){ Form form = new Form("form"); final TextField<String> field = new TextField<String>("field", new Model("名前を入力してください")); field.setOutputMarkupId(true); field.add(new AjaxFormComponentUpdatingBehavior("onfocus"){ @Override protected void onUpdate(AjaxRequestTarget target){ if(isFirst){ field.setModelObject(""); target.addComponent(field); isFirst = false; } } }); form.add(field); add(form); } }
アプリケーションクラスとweb.xmlは省略。TextFieldを継承した物を作ろうとしたけどクラス名が思い浮かばなかったから諦めた