頭に浮かんだ最初の解決策は、JavaScriptコードでユーザーが直接選択したオプションを確認することです。
Wicket 1.5のコードは次のとおりです(AjaxCallDecoratorを使用した最後のバージョンであるため)。
@Override
protected IAjaxCallDecorator getAjaxCallDecorator() {
return new AjaxCallDecorator() {
@Override
public CharSequence decorateScript(Component c, CharSequence script) {
return "if (" + shouldUseDecoratorScript() + ") { /* Show the spinner icon */ } " + script;
}
@Override
public CharSequence decorateOnSuccessScript(Component c, CharSequence script) {
return "if (" + shouldUseDecoratorScript() + ") { /* Hide the spinner icon */ } " + script;
}
@Override
public CharSequence decorateOnFailureScript(Component c, CharSequence script) {
return "if (" + shouldUseDecoratorScript() + ") { /* Hide the spinner icon */ } " + script;
}
private CharSequence shouldUseDecoratorScript() {
return "this.value !== \"" + enterAddressManuallyItem.getId() + "\"";
}
};
}
ここで、enterAddressManuallyItemは、「アドレスを手動で入力する」オプションに対応する項目です。getId()getterがあると思いますが、次のようなものを使用します
new ChoiceRenderer<DropDownChoiceItem>("text", "id")
DropDownChoiceコンストラクターの最後のパラメーターとして。
たぶん、もっと良い解決策があります。