I've been trying to figure this out for a few hours.... I've got a strange
issue with the Palette component causing a NullPointerException upon form
submit, but only on form failure involving server-side validator's such as
the email validator (i.e. the form is submitted - onSubmit called but
onSuccess not called due to errors, and <t:errors /> are displayed). I'm
using Tapestry 5.1.0.5

Background: I'm using Palette within a BeanEditForm when editing a User
instance to edit a list of groups (List<Group>) to which the user belongs (a
many-to-many relationship - I'm using Spring + Hibernate). The NPE is only
thrown when submitting form with errors that are not catched by the JS
validators, and are processed on the server, such as the email validator.
Also, the NPE is only thrown if there are some groups on the "selected"
side. Here's the first line from the stack trace:

Render queue error in
org.apache.tapestry5.internal.structure.renderphaseeventhandle...@79a340:
java.lang.NullPointerException

Here's the palette declaration:

<t:palette t:id="groups" selected="user.groups" encoder="selectGroups"
model="selectGroups" />

The user instance is persisted in the page class, and is initially populated
in onActivate:

        @Property
        @Persist
        private User user;

The selectGroups property, which is used for both model and encoder, is
initialized in page's onPrepare with each request. It is a
GenericSelectModel instance.

That said, the palette component works properly almost all the time. When I
edit a user instance, set all fields, select the groups and save, it all
works. It only fails with the NPE when I leave out the email field, causing
the server-side validation to display an error in <t:errors />. I've tried
to add logger statements to the getter for selectGroups, and whenever it is
actually called, both the selectGroups collection and user.groups
collections are non-null and properly populated. So I have no idea what
might be causing the NPE?

Any hints are highly appreciated! Below is a longer snippet from the stack
trace.

Thanks,
Rado




STACK TRACE:

12:35:34,081 ERROR Account:84 - Render queue error in
org.apache.tapestry5.internal.structure.renderphaseeventhandle...@c7014c:
java.lang.NullPointerException
java.lang.NullPointerException
        at
org.apache.tapestry5.internal.util.SelectModelRenderer.option(SelectModelRenderer.java:49)
        at
org.apache.tapestry5.corelib.components.Palette$SelectedRenderer.render(Palette.java:153)
        at
org.apache.tapestry5.internal.structure.RenderPhaseEventHandler$1.render(RenderPhaseEventHandler.java:75)
        at
org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
        at
org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
        at 
$PageRenderQueue_121d408df33.render($PageRenderQueue_121d408df33.java)
        at 
$PageRenderQueue_121d408df29.render($PageRenderQueue_121d408df29.java)
        at
org.apache.tapestry5.internal.services.MarkupRendererTerminator.renderMarkup(MarkupRendererTerminator.java:37)
        at
org.apache.tapestry5.services.TapestryModule$27.renderMarkup(TapestryModule.java:1748)
        at
$MarkupRenderer_121d408df35.renderMarkup($MarkupRenderer_121d408df35.java)
        at
org.apache.tapestry5.services.TapestryModule$26.renderMarkup(TapestryModule.java:1732)
        at
$MarkupRenderer_121d408df35.renderMarkup($MarkupRenderer_121d408df35.java)
        at
org.apache.tapestry5.services.TapestryModule$25.renderMarkup(TapestryModule.java:1714)
        at
$MarkupRenderer_121d408df35.renderMarkup($MarkupRenderer_121d408df35.java)
        at
org.apache.tapestry5.services.TapestryModule$24.renderMarkup(TapestryModule.java:1700)
        at
$MarkupRenderer_121d408df35.renderMarkup($MarkupRenderer_121d408df35.java)
        at
org.apache.tapestry5.services.TapestryModule$23.renderMarkup(TapestryModule.java:1681)
        at
$MarkupRenderer_121d408df35.renderMarkup($MarkupRenderer_121d408df35.java)
        at
org.apache.tapestry5.services.TapestryModule$22.renderMarkup(TapestryModule.java:1662)
        at
$MarkupRenderer_121d408df35.renderMarkup($MarkupRenderer_121d408df35.java)
        at
$MarkupRenderer_121d408df32.renderMarkup($MarkupRenderer_121d408df32.java)
        at
org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:64)
        at
$PageMarkupRenderer_121d408df2f.renderPageMarkup($PageMarkupRenderer_121d408df2f.java)
        at
org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:61)
        at
$PageResponseRenderer_121d408dea6.renderPageResponse($PageResponseRenderer_121d408dea6.java)
        at
org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:63)
        at
org.apache.tapestry5.services.TapestryModule$33.handle(TapestryModule.java:1943)
        at
$PageRenderRequestHandler_121d408dea7.handle($PageRenderRequestHandler_121d408dea7.java)
        at
$PageRenderRequestHandler_121d408de90.handle($PageRenderRequestHandler_121d408de90.java)
        at
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
        at
$ComponentRequestHandler_121d408de94.handlePageRender($ComponentRequestHandler_121d408de94.java)
        at
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
        at $Dispatcher_121d408de96.dispatch($Dispatcher_121d408de96.java)
        at $Dispatcher_121d408de8a.dispatch($Dispatcher_121d408de8a.java)
        at
org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:245)
        ...
        ...
        ...
-- 
View this message in context: 
http://www.nabble.com/T5.1%3A-Palette-causing-a-NPE-upon-form-submit-tp23996561p23996561.html
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to