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
