フィールドのプロパティをアノテーションで指定する

S2Click(というかClick)ではフォームに追加するフィールドのプロパティを指定することでフィールドの見た目やバリデーション、アクションリスナの設定などを行います。コンストラクタで指定可能な基本的なプロパティ以外については以下のように初期化時にsetterメソッドを呼び出して設定を行う必要があります。

public class MessageForm extends S2ClickForm {

  public TextField name = new TextField("name", true);
  public TextField message = new TextField("message", true);
  public Submit submit = new Submit("add");

  public MessageForm(String name){
    super(name);
    
    name.setSize(10);
    name.setMaxLength(10);
    
    message.setSize(40);
    message.setMaxLength(200);
    
    setFieldAutoRegisteration(true);
    setJavaScriptValidation(true);
  }

}

これをアノテーションで指定できるようにしてみました。こんな感じになります。

public class MessageForm extends S2ClickForm {

  @Attributes(size=10, maxLength=10)
  public TextField name = new TextField("name", true);
  @Attributes(size=40, maxLength=200)
  public TextField message = new TextField("message", true);
  public Submit submit = new Submit("add");

  public MessageForm(String name){
    super(name);
    setFieldAutoRegisteration(true);
    setJavaScriptValidation(true);
  }

}

ただし、この機能はS2ClickFormを継承したフォームクラスでのみ利用可能です。また、指定可能なプロパティはClick標準のコントロールの中なら共通的かつ利用頻度の高そうなものをピックアップして実装しています。なので@Attributesアノテーションですべてのプロパティを指定できるというわけではありません。