Wicket1.5でIComponentResolverを使ってフォームコンポーネントをadd
public boolean addForRender(Component component, MarkupContainer container, MarkupStream markupStream) { container.internalAdd(component); component.prepareForRender(); try { if (markupStream == null) { component.render(); } else { component.render(markupStream); } } finally { component.afterRender(); } return true; }Re: FormでComponentResolverを使用したい (Wicket-ja-user 228) - Wicket-ja - OSDN
1.5になってresolveメソッドがコンポーネント自体を返すように変更されたので、ここのコードも変える必要がある。
/** * フォームコンポーネントに入力値を反映ために使うメソッド。 * @param component * @param container * @param markupStream * @return */ private void addForRender(Component component, MarkupContainer container, MarkupStream markupStream){ if (markupStream != null){ component.setMarkup(markupStream.getMarkupFragment()); } component.setParent(this); setAuto(true); add(component); setAuto(false); }
本当はadd(component)だけ書いて終わりたいのだが、addメソッドではisAutoのチェックが入るのでそのチェックをくぐり抜けるため。
こういう使い方をやっていいのかどうかは謎。