在通常不呈现为标记的组件上设置的标记 ID
Markup id set on a component that is usually not rendered into markup
我收到这条消息:
Markup id set on a component that is usually not rendered into markup. Markup id: pnlMessages3a, component id: pnlMessages, component tag: wicket:panel.
面板被添加到这样的封闭面板中:
add(new MessagePanel("pnlMessages"));
在html
<wicket:panel wicket:id="pnlMessages">tblData</wicket:panel>
在 MessagePanel 中,我调用 super(id) 将组件 ID "pnlMessages" 传递给父级 class。 class MessagePanel 中没有其他组件启用 OutputMarkupId。
那么为什么我会收到警告?
我不得不提一下,使用 AjaxSelfUpdatingTimerBehavior
在 MessagePanel 中更新了一些标签和图像
原因是你误用了<wicket:panel>
。
它的目的是包装MyPanel.html的HTML内容。 IE。 Wicket 将使用内容 <wicket:panel> CONTENT </wicket:panel>
作为应包含在另一个面板或页面中的标记。
此外,Wicket 在生产模式下不会呈现任何 <wicket:xyz>
元素。因此,尝试使用 Ajax 更新此类 HTML 元素将失败,因为它不会在 DOM.
中
您应该将其替换为:<div wicket:id="pnlMessages">tblData</div>
我收到这条消息:
Markup id set on a component that is usually not rendered into markup. Markup id: pnlMessages3a, component id: pnlMessages, component tag: wicket:panel.
面板被添加到这样的封闭面板中:
add(new MessagePanel("pnlMessages"));
在html
<wicket:panel wicket:id="pnlMessages">tblData</wicket:panel>
在 MessagePanel 中,我调用 super(id) 将组件 ID "pnlMessages" 传递给父级 class。 class MessagePanel 中没有其他组件启用 OutputMarkupId。
那么为什么我会收到警告?
我不得不提一下,使用 AjaxSelfUpdatingTimerBehavior
在 MessagePanel 中更新了一些标签和图像原因是你误用了<wicket:panel>
。
它的目的是包装MyPanel.html的HTML内容。 IE。 Wicket 将使用内容 <wicket:panel> CONTENT </wicket:panel>
作为应包含在另一个面板或页面中的标记。
此外,Wicket 在生产模式下不会呈现任何 <wicket:xyz>
元素。因此,尝试使用 Ajax 更新此类 HTML 元素将失败,因为它不会在 DOM.
您应该将其替换为:<div wicket:id="pnlMessages">tblData</div>