Hi all,

I've recently upgraded a 1.2.6 application to 1.3.1.  This involved
simultaneously upgrading libraries for Wicket, Databinder and Hibernate to
name but three, so until my application settles, I'll never be sure which
library is causing each issue!

I'm getting the following exception in my logs on development, but not
deployment:

25-Mar-2008 12:56:21 org.apache.wicket.RequestCycle detach
SEVERE: there was an error cleaning up target
[EMAIL PROTECTED]
class = flow.pages.internal.job.ViewJob, id = 1, version =
0]->newDuplicationTaskLink->interface
org.apache.wicket.markup.html.link.ILinkListener.ILinkListener (request
paramaters: [RequestParameters  componentPath=1:newDuplicationTaskLink
pageMapName=null versionNumber=0 interfaceName=ILinkListener
componentId=null behaviorId=null urlDepth=-1 parameters={}
onlyProcessIfPathActive=false]).
org.hibernate.PropertyValueException: not-null property references a null or
transient value: flow.data.DuplicationTask.description
    at org.hibernate.engine.Nullability.checkNullability(Nullability.java
:72)
[...snip...]
    at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:305)
    at flow.pages.internal.job.ViewJob$9.isVisible(ViewJob.java:219)
    at org.apache.wicket.Component.renderHead(Component.java:2528)
    at org.apache.wicket.markup.html.WebPage$1.component(WebPage.java:432)
    at org.apache.wicket.MarkupContainer.visitChildren(MarkupContainer.java
:821)
    at org.apache.wicket.MarkupContainer.visitChildren(MarkupContainer.java
:836)
    at org.apache.wicket.MarkupContainer.visitChildren(MarkupContainer.java
:861)
    at org.apache.wicket.markup.html.WebPage.onDetach(WebPage.java:425)
    at org.apache.wicket.Component.detach(Component.java:1075)
    at org.apache.wicket.request.target.component.PageRequestTarget.detach(
PageRequestTarget.java:80)
    at org.apache.wicket.RequestCycle.detach(RequestCycle.java:1046)
    at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1334)
    at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
    at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java
:354)
    at org.apache.wicket.protocol.http.WicketFilter.doFilter(
WicketFilter.java:194)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(
ServletHandler.java:1084)
[...snip...]


I think my problem might be related to the onDetach method in WebPage.  In
this method, if there is an HtmlHeaderContainer, and if the application is
in development mode, it visits all the components on the page and calls
renderHead on each.

I do not understand the intention behind that at all.  Can anyone explain
why it is doing what it is doing, and how I can avoid this Exception?

Charlie.



More detailed information if required:

I have a page (ViewJob) which which has a Link whose onClick calls:

    HibernateObjectModel jobModel =
(HibernateObjectModel)((IChainingModel)ViewJob.this.getModel()).getChainedModel();
    WebPage responsePage = new NewDuplicationTask(jobModel);
    setResponsePage(responsePage);

The constructor of the NewDuplicationTask page extracts the Job from the
passed jobModel and calls duplicationTask.setJob(job).  The DuplicationTask
that it holds has a "description" property, which is initially null and is
populated via a required field on the NewDuplicationTask page.  However, the
above Exception complaining about a null description property occurs at page
display, way before the form could have been submitted.  The Exception
thrown is pointing to an isVisible check, on the page that the user has just
left.

The renderHead call mentioned above calls isVisible, and in my case I have a
component whose visibility depends on whether or not a Job already exists in
the database with the same "job number".  I believe this check is causing
Hibernate to attempt to flush the Job back to the database, which then
causes the Exception because the DuplicationTask that has just been added to
the in-memory Job hasn't been completed yet.  And certainly shouldn't be
flushed to the database until the Submit button is finally pressed!

Reply via email to