多くの TextFields を持つフォームを含むコンポーネントがあります。それが機能する方法は、変更されたときに値がすぐに永続化されることです(すべてAJAXを介して[保存]ボタンはありません)。
AJAX 呼び出しは正常に機能し、値がモデルに取得されます。
モデル (および含まれるエンティティ) を保存するコードは、親コンポーネントにあります。onModelChanged() をオーバーライドして、コンポーネントから親に変更を伝達すると考えました。しかし、 onModelChanged() は呼び出されません。
親には、クラス メンバー フィールドとして独自のモデルがあります。サブコンポーネントはこれを使用します:
ReleaseTraitRowPanel( String id, IModel<IHasTraits> relModel, ... ) {
...
PropertyModel<String> traitModel = new PropertyModel( relModel.getObject().getTraits(), prop);
EditableLink4 link = new EditableLink4("link", traitModel){
// Pass the change notification to upper level. TODO: Does Wicket do this automatically?
@Override protected void onModelChanged() {
ReleaseTraitRowPanel.this.onModelChanged();
}
};
...
}
それはどのように行われるべきですか?onModelChanged() を渡す必要がありますか? それとも、ウィケットには他のモデルに変更を通知する方法がありますか?
関連 - CompoundPropertyModel はフォーム専用ですか、それとも任意のコンポーネントで使用できますか? ここで使用できます - prop
id と同じです。