當我添加一個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)
我可以清楚地看到問題的組件在標記添加在我AbstractParentPanel,這我ChildPanel延伸。奇怪的是,如果我使AbstractParentPanel成爲非抽象類,那麼我可以添加該面板而不會出現問題。
爲什麼我會收到此錯誤?
注:我已經找到了這個問題的答案。我把它加入到SO來幫助別人,因爲我浪費了更多的時間,而不是我應該做這樣一個簡單的檢查。如果你被這個消息燒燬,這個答案幫助了你,認爲投票了this JIRA ticket
確保字符串'wicket:id'不是拼寫錯誤。一旦追蹤其他可能性,我花了半個小時,然後注意到在標記中有'wicker:id'。 :) – biziclop
@biziclop :-) QWickie插件可以幫助我避免這種情況,但我感到你的痛苦。 – Snekse
重寫創建組件的方法時,我經常遇到這種情況,例如'AbstractTab.getPanel(String panelId)'但不要(或不正確)使用panelId參數來構造我的組件,例如'return MyPanel(「panelId」);''而不是'return MyPanel(panelId);'(注意panelId周圍的引號) – peterp