当我将ChildPanel添加到页面时,我收到一条错误,指出:
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. [Form [Component id = myForm]]
2. [DropDownChoice [Component id = referenceType]]
3. [TextField [Component id = referenceNumber]]
4. [CheckBox [Component id = referenceReqChk]]
5. [ [Component id = saveRefNumButton]]
6. [ [Component id = cancelRefNumButton]]
at org.apache.wicket.Page.checkRendering(Page.java:693)
at org.apache.wicket.Page.onAfterRender(Page.java:849)
at org.apache.wicket.markup.html.WebPage.onAfterRender(WebPage.java:213)
at org.apache.wicket.Component.afterRender(Component.java:950)
at org.apache.wicket.Component.render(Component.java:2298)
at org.apache.wicket.Page.renderPage(Page.java:1041)
at org.apache.wicket.request.handler.render.
WebPageRenderer.renderPage(WebPageRenderer.java:105)
Run Code Online (Sandbox Code Playgroud)
我可以清楚地看到有问题的组件被添加到我的ChildPanel扩展的AbstractParentPanel的标记中.奇怪的是,如果我将AbstractParentPanel设为非抽象类,我可以添加该面板而不会出现任何问题.
为什么我收到此错误?
注意:我已经找到了这个问题的答案.我将它添加到SO中以帮助其他人,因为我浪费的时间超过了我应该进行如此简单的检查.如果您被此消息灼伤并且此答案对您有所帮助,请考虑投票支持此JIRA票证
始终从显而易见开始,并确保wicket:id(s)在标记中定义.如果您在标记中看到添加的ID,那么您可能会遇到以下情况:
add(new ChildPanel("myChildPanel"));AbstractParentPanel你打电话的时候add(new Label("myCommonLabel"));ChildPanel.html,您忘记添加<wicket:extend>标签或甚至<wicket:panel>标签,或者您没有包含相关组件.