You need to define a validation delegate on your *form*.  The ValidField
gets its delegate (used to track and report errors) from the containing
form.

Documentation could be better, as would a better warning when the delegate
isn't specified.

----- Original Message -----
From: "Luis Neves" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Cc: "Tapestry Developer" <[EMAIL PROTECTED]>
Sent: Friday, June 07, 2002 3:10 PM
Subject: Re: [Tapestry-developer] Possible bug in TextField.java?


>
> Hello Howard,
>
> > The path of least resistance is to use a ValidField
> > instead of a TextField.  The validator will do the
> > conversion between int and String.
>
>
> That makes sense, but I'm can't make it work.
> For some reason I'm getting  a "java.lang.NullPointerException".
>
> I'm trying to implement a shopping Cart,
> where each row has a input field to change the quantity.
> I have a Foreach component that fetches the items in the cart and
> draws the rows.
> The schema is something like this:
>
> Form
>     Foreach
>        Direct | Insert | Insert | Insert | ValidField | Insert
>
>
> With the TextField the Cart gets rendered but not with ValidField.
>
> The definition I use for the TextField:
>
>  <component id="itemQuantity" type="TextField">
>   <binding name="value" property-path="currentItem.qty" />
>   <static-binding name="displayWidth">3</static-binding>
>   <static-binding name="maximumLength">10</static-binding>
>  </component>
>
> ***********************************************************
>
> The definition I use for the ValidField:
>
>  <bean name="delegate" class="net.sf.tapestry.valid.ValidationDelegate" />
>
>  <bean name="intValidator" class="net.sf.tapestry.valid.NumberValidator">
>   <set-property name="required">
>    <field-value field-name="Boolean.TRUE"/>
>   </set-property>
>  </bean>
>
>  <component id="itemQuantity" type="ValidField">
>   <binding name="validator" property-path="beans.intValidator" />
>   <binding name="value" property-path="currentItem.qty" />
>   <static-binding name="displayName">itemQuantity</static-binding>
>   <static-binding name="displayWidth">3</static-binding>
>   <static-binding name="maximumLength">10</static-binding>
>  </component>
>
>
> ************************************************************
>
> The Trace:
>
> An exception has occured.
> You may continue by restarting the session.
>
> Name: net.sf.tapestry.RequestCycleException
> Message:
> component: tapestryCIO.pages.Cart@da691a[Cart]
>
> Name: java.lang.NullPointerException
> Message:
> Trace:
> net.sf.tapestry.valid.ValidField.renderComponent(ValidField.java:227)
> net.sf.tapestry.AbstractComponent.render(AbstractComponent.java:874)
>
net.sf.tapestry.AbstractComponent.renderWrapped(AbstractComponent.java:645)
> net.sf.tapestry.components.Foreach.renderComponent(Foreach.java:202)
> net.sf.tapestry.AbstractComponent.render(AbstractComponent.java:874)
>
net.sf.tapestry.AbstractComponent.renderWrapped(AbstractComponent.java:645)
> net.sf.tapestry.form.Form.renderComponent(Form.java:402)
> net.sf.tapestry.AbstractComponent.render(AbstractComponent.java:874)
>
net.sf.tapestry.AbstractComponent.renderWrapped(AbstractComponent.java:645)
>
net.sf.tapestry.components.InsertWrapped.renderComponent(InsertWrapped.java:
> 60)
> net.sf.tapestry.AbstractComponent.render(AbstractComponent.java:874)
>
net.sf.tapestry.AbstractComponent.renderWrapped(AbstractComponent.java:645)
> net.sf.tapestry.html.Body.renderComponent(Body.java:266)
> net.sf.tapestry.AbstractComponent.render(AbstractComponent.java:874)
>
net.sf.tapestry.AbstractComponent.renderWrapped(AbstractComponent.java:645)
> net.sf.tapestry.html.Shell.renderComponent(Shell.java:188)
> net.sf.tapestry.AbstractComponent.render(AbstractComponent.java:874)
> net.sf.tapestry.BaseComponent.renderComponent(BaseComponent.java:455)
> net.sf.tapestry.AbstractComponent.render(AbstractComponent.java:874)
> net.sf.tapestry.BaseComponent.renderComponent(BaseComponent.java:455)
> net.sf.tapestry.AbstractComponent.render(AbstractComponent.java:874)
> net.sf.tapestry.AbstractPage.renderPage(AbstractPage.java:267)
> net.sf.tapestry.engine.RequestCycle.renderPage(RequestCycle.java:410)
>
net.sf.tapestry.engine.AbstractEngine.renderResponse(AbstractEngine.java:614
> )
> net.sf.tapestry.engine.DirectService.service(DirectService.java:156)
> net.sf.tapestry.engine.AbstractEngine.service(AbstractEngine.java:747)
> net.sf.tapestry.ApplicationServlet.doService(ApplicationServlet.java:193)
> tapestryCIO.PethopServlet.doService(PethopServlet.java:31)
> net.sf.tapestry.ApplicationServlet.doGet(ApplicationServlet.java:161)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:126)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:103)
>
com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:9
> 6)
> com.caucho.server.http.Invocation.service(Invocation.java:311)
> com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:218)
> com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:160)
> com.caucho.server.TcpConnection.run(TcpConnection.java:137)
> java.lang.Thread.run(Thread.java:536)
>
>
>
> Any idea of what I'm doing wrong?
> Thanks,
>
>
> Luis Neves
>
>
> _______________________________________________________________
>
> Don't miss the 2002 Sprint PCS Application Developer's Conference
> August 25-28 in Las Vegas -
http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink
>
> _______________________________________________
> Tapestry-developer mailing list
> [EMAIL PROTECTED]
> https://lists.sourceforge.net/lists/listinfo/tapestry-developer


_______________________________________________________________

Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas - 
http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink

_______________________________________________
Tapestry-developer mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/tapestry-developer

Reply via email to