0
我试图将一个片段嵌套到另一个片段中。一个列表视图填充了父代片段(它的工作原理),现在我想在某些情况下第二个片段嵌套在第一个片段中。这里是我的代码来填充我的列表视图:Wicket嵌套片段
@Override
protected void populateItem(final Item<Message> item) {
Message msg = item.getModelObject();
MessageFragment msgFragment = new MessageFragment("entry", "messageFragment", this, msg);
WebMarkupContainer msgRatingContainer = new WebMarkupContainer("messageRatingContainer");
msgRatingContainer.setVisible(false);
if(msg.getType() == MessageType.RESERVATION){
msgRatingContainer.add(new MessageRatingFragment("messageRatingContainer", "messageRatingFragment",this, msg));
msgRatingContainer.setVisible(true);
}
msgFragment.add(msgRatingContainer);
item.add(msgFragment);
}
的参与标记:
<li wicket:id="listView"><div wicket:id="entry"></div></li>
<wicket:fragment wicket:id="messageFragment">
<div class="MessageAlert">
My Parent fragment content
</div>
<div wicket:id="messageRatingContainer"></div>
<wicket:fragment wicket:id="messageRatingFragment">
My nested fragment content
</wicket:fragment>
</wicket:fragment>
如果我没有任何嵌套片段(如果条件为假)呈现在UI不如预期,如果条件为真,我收到以下错误:
org.apache.wicket.WicketRuntimeException: The component(s) below failed to render. A common problem is that you have added a component in code but forgot to reference it in the markup (thus the component will never be rendered).
1. [MarkupContainer [Component id = messageRatingContainer]]
2. [MarkupContainer [Component id = messageRatingContainer]]
我想是一些与组件层次结构连接,但我无法找出哪些方法是正确的。
MarkupContainer“messageRatingContainer”总是通过msgFragment.add(msgRatingContainer)添加到标记中,实际上当我在if条件内添加嵌套片段时,问题发生不在外面(it msg.getType()!=它始终工作的MessageType.RESERVATION) – Wizche