Wicket Palette のバリデータ

Wicket extension にある Palette の注意点と必須バリデータの方法

org.apache.wicket.extensions.markup.html.form.palette.Palette<T>(
  String id
   ,IModel<List<T>> model
   ,IModel<? extends Collection<? extends T>> choicesModel
   ,IChoiceRenderer<T> choiceRenderer
   ,boolean arrowOrder
 )
各パラメータは、、、
  id              = wicket:id
  model           = 選択済み要素の List の wicket Model
  choicesModel    = 全ての選択肢の Collection Model
  choiceRenderer  = <option> 描画のRenderer
  rows            = 表示行数
  arrowOrder      = 順序入れ替えボタン表示指定、true=表示する


初期表示で選択済みを表示させる場合、model に格納したものを
choicesModel から除外してはいけない!
あくまでも「全ての選択肢」であって、model に存在させたものも
含んでなければならない。

Palette に必須選択バリデーションを掛けたい場合は、以下のように Palette 内部
hidden フィールドに当てられているコンポーネントの生成メソッドをオーバーライド
して、require をセットする。


Palette palette = new Palette(...){ 
   @Override 
   protected Recorder newRecorderComponent() { 
      Recorder rec = super.newRecorderComponent(); 
      rec.setRequired(true); 
      return rec; 
   }

};