[ https://issues.apache.org/jira/browse/WICKET-3162?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
smallufo updated WICKET-3162: ----------------------------- Description: Hi , I have a simple panel , with a border and a listView : <span wicket:id="border"> <wicket:container wicket:id="commentsView"> <div> //comment layout </div> </wicket:container> </span> And the code : add(border); ListView<Comment> commentsView = new ListView<Comment>("commentsView" , new LoadableDetachableModel<List<Comment>>() { @Override protected List<Comment> load() { return commentDao.getComments(0 , 10); } }) { @Override protected void populateItem(ListItem<Comment> item) { //comment layout } }; border.add(commentsView); commentsView.setReuseItems(false); The Panel has a border , with a clickable button , can be used to collapse/expand the content of the border with AJAX. Here is my steps : 1. I first collapse the panel . 2. Then open another browser panel , add a comment. (the underlaying data model is changed) 3. Back to the original panel , expand the panel ... And I got a NPE : 2010-11-12 05:19:12,661 ERROR wicket.RequestCycle - Exception in rendering component: [MarkupContainer [Component id = _body]] org.apache.wicket.WicketRuntimeException: Exception in rendering component: [MarkupContainer [Component id = _body]] at org.apache.wicket.Component.renderComponent(Component.java:2725) at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1538) at org.apache.wicket.Component.render(Component.java:2517) at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1440) at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1603) at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1527) at org.apache.wicket.Component.renderComponent(Component.java:2686) at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1538) ... Caused by: java.lang.NullPointerException at org.apache.wicket.markup.html.border.Border$BorderBodyContainer.onComponentTagBody(Border.java:375) at org.apache.wicket.Component.renderComponent(Component.java:2686) ... 45 more Igor replied : s/border.add(commentsView);/border.getbodycontainer().add(commentsView);/ I replied : I tried , but NPE is still thrown , with the same stacktrace... Is there anything I missed ? Here is my border's HTML : <div wicket:id="content"> <wicket:body/> </div> border's java code : content = new WebMarkupContainer("content"); content.setOutputMarkupPlaceholderTag(true); content.setVisible(defaultExpanded); content.setRenderBodyOnly(false); add(content); content.add(getBodyContainer()); and the ajax link's onClick() : Link<Void> collapseExpandLink = new AjaxFallbackLink<Void>("collapseExpandLink") { @Override public void onClick(AjaxRequestTarget target) { expanded=!expanded; content.setVisible(expanded); target.addComponent(content); } }; add(collapseExpandLink); was: Hi , I have a simple panel , with a border and a listView : <span wicket:id="border"> <wicket:container wicket:id="commentsView"> <div> //comment layout </div> </wicket:container> </span> And the code : add(border); ListView<Comment> commentsView = new ListView<Comment>("commentsView" , new LoadableDetachableModel<List<Comment>>() { @Override protected List<Comment> load() { return commentDao.getComments(0 , 10); } }) { @Override protected void populateItem(ListItem<Comment> item) { //comment layout } }; border.add(commentsView); commentsView.setReuseItems(false); The Panel has a border , with a clickable button , can be used to collapse/expand the content of the border with AJAX. Here is my steps : 1. I first collapse the panel . 2. Then open another browser panel , add a comment. (the underlaying data model is changed) 3. Back to the original panel , expand the panel ... And I got a NPE : 2010-11-12 05:19:12,661 ERROR wicket.RequestCycle - Exception in rendering component: [MarkupContainer [Component id = _body]] org.apache.wicket.WicketRuntimeException: Exception in rendering component: [MarkupContainer [Component id = _body]] at org.apache.wicket.Component.renderComponent(Component.java:2725) at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1538) at org.apache.wicket.Component.render(Component.java:2517) at org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1440) at org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1603) at org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1527) at org.apache.wicket.Component.renderComponent(Component.java:2686) at org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1538) ... Caused by: java.lang.NullPointerException at org.apache.wicket.markup.html.border.Border$BorderBodyContainer.onComponentTagBody(Border.java:375) at org.apache.wicket.Component.renderComponent(Component.java:2686) ... 45 more > NPE when the underlaying model changed and ajax re-appear. > ----------------------------------------------------------- > > Key: WICKET-3162 > URL: https://issues.apache.org/jira/browse/WICKET-3162 > Project: Wicket > Issue Type: Bug > Affects Versions: 1.4.13 > Environment: wicket 1.4.13 > Reporter: smallufo > Attachments: CommentsPanel.html, CommentsPanel.java, Dao.java, > DaoImpl.java, HomePage.html, HomePage.java, PulldownBorder.html, > PulldownBorder.java, quickstart.zip, WicketApplication.java > > Original Estimate: 0h > Remaining Estimate: 0h > > Hi , I have a simple panel , with a border and a listView : > <span wicket:id="border"> > <wicket:container wicket:id="commentsView"> > <div> > //comment layout > </div> > </wicket:container> > </span> > And the code : > add(border); > ListView<Comment> commentsView = new ListView<Comment>("commentsView" , new > LoadableDetachableModel<List<Comment>>() > { > @Override > protected List<Comment> load() { > return commentDao.getComments(0 , 10); > } > }) > { > @Override > protected void populateItem(ListItem<Comment> item) { > //comment layout > } > }; > border.add(commentsView); > commentsView.setReuseItems(false); > The Panel has a border , with a clickable button , can be used to > collapse/expand the content of the border with AJAX. > Here is my steps : > 1. I first collapse the panel . > 2. Then open another browser panel , add a comment. (the underlaying data > model is changed) > 3. Back to the original panel , expand the panel ... > And I got a NPE : > 2010-11-12 05:19:12,661 ERROR wicket.RequestCycle - Exception in rendering > component: [MarkupContainer [Component id = _body]] > org.apache.wicket.WicketRuntimeException: Exception in rendering component: > [MarkupContainer [Component id = _body]] > at org.apache.wicket.Component.renderComponent(Component.java:2725) > at > org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1538) > at org.apache.wicket.Component.render(Component.java:2517) > at > org.apache.wicket.MarkupContainer.renderNext(MarkupContainer.java:1440) > at > org.apache.wicket.MarkupContainer.renderComponentTagBody(MarkupContainer.java:1603) > at > org.apache.wicket.MarkupContainer.onComponentTagBody(MarkupContainer.java:1527) > at org.apache.wicket.Component.renderComponent(Component.java:2686) > at > org.apache.wicket.MarkupContainer.onRender(MarkupContainer.java:1538) > ... > Caused by: java.lang.NullPointerException > at > org.apache.wicket.markup.html.border.Border$BorderBodyContainer.onComponentTagBody(Border.java:375) > at org.apache.wicket.Component.renderComponent(Component.java:2686) > ... 45 more > > > Igor replied : > s/border.add(commentsView);/border.getbodycontainer().add(commentsView);/ > I replied : > I tried , but NPE is still thrown , with the same stacktrace... > Is there anything I missed ? > Here is my border's HTML : > <div wicket:id="content"> > <wicket:body/> > </div> > border's java code : > content = new WebMarkupContainer("content"); > > content.setOutputMarkupPlaceholderTag(true); > content.setVisible(defaultExpanded); > content.setRenderBodyOnly(false); > add(content); > content.add(getBodyContainer()); > and the ajax link's onClick() : > Link<Void> collapseExpandLink = new > AjaxFallbackLink<Void>("collapseExpandLink") > { > @Override > public void onClick(AjaxRequestTarget target) > { > expanded=!expanded; > content.setVisible(expanded); > target.addComponent(content); > } > }; > add(collapseExpandLink); -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.