[ https://issues.apache.org/jira/browse/WICKET-943?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12532131 ]
Matej Knopp commented on WICKET-943: ------------------------------------ setRenderAllowed(isActionAuthorized(RENDER)) must be called after beforeRender(). Can't we just call setRenderAllowed(true) in component detach? > java.lang.NullPointerException at > wicket.markup.html.list.ListView.renderItem(ListView.java:676) > ------------------------------------------------------------------------------------------------ > > Key: WICKET-943 > URL: https://issues.apache.org/jira/browse/WICKET-943 > Project: Wicket > Issue Type: Bug > Components: wicket > Affects Versions: 1.2.6 > Environment: Window XP SP3, Java 1.6, Tomcat 5.0_09 > Reporter: Alexander Suslov > Assignee: Johan Compagner > Priority: Blocker > Fix For: 1.2.7 > > > This problem happens if parent component has been hidden by authorization > strategy during the previous page render, but on the next render parent > component becomes visible. This problem is common for all repeaters. The > problem here is in internalOnAttach() method of repeaters. This method will > not populate items if it not visible in hierarchy, but when it checks this it > use old visible state (Component.FLAG_IS_RENDER_ALLOWED) of component (itself > and parent components), this state is changed after setRenderAllowed() method > in Component.java on 1630 line returns, but internalAttach() method is called > earlier in Component.java on 1624 line. After that component become visible > and will be rendered. But it can't be rendered because items were not > populated, so null pointer exception occurs. > This problem can be fixed if method calls of internalAttach() and > setRenderAllowed(isActionAuthorized(RENDER)) will be swapped or logic of > repeaters (ListView, DataView, etc) components will be changed. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.