This is a bug, please add an issue.

It is not quite a show stopper.

The difference is that blank fields used to show up as the empty
string and are now showing up in the properties as null.

This could be addressed by a different NullFieldStrategy.  Perhaps
Tapestry should detect that the field is of type String and use
NullFieldStrategy that converts blank fields to the empty string.

In any case, a workaround is:

Object onSuccess() {

    if (_firstName == null) _firstName = "";
    if (_lastName == null) _lastName = "";

                _basicInput2.onActivate(_firstName, _lastName);
                return _basicInput2;
        }




On Jan 24, 2008 4:18 AM, Geoff Callender
<[EMAIL PROTECTED]> wrote:
> First, is it OK to use the dev list in this way, given that 5.0.9 is
> up for a vote?
>
> Second, trying 5.0.9, I'm getting NullPointerException when a
> TextField is left empty.  This wasn't the case in 5.0.7.  I haven't
> tried the "translate" or "nulls" attribute of TextField but I figured
> this is the ultimate basic case so I shouldn't need to.
>
> Have I misunderstood what's required of TextField in 5.0.9?
>
> Here's the form.  The exception occurs if either TextField is left
> empty or only spaces are entered:
>
>         <form t:type="form" t:id="form">
>                 <table>
>                         <tr>
>                                 <td>First Name:</td>
>                                 <td><input t:type="TextField" 
> value="firstName"/></td>
>                         </tr>
>                         <tr>
>                                 <td>Last Name:</td>
>                                 <td><input t:type="TextField" 
> value="lastName"/></td>
>                         </tr>
>                 </table>
>                 <input type="submit" value="Display"/>
>         </form>
> And the java.  You'll see that this is an input screen that isn't set
> up in advance.
>
> public class BasicInput1 {
>
>         private String _firstName;
>
>         private String _lastName;
>
>         @InjectPage
>         private BasicInput2 _basicInput2;
>
>         Object onSuccess() {
>                 _basicInput2.onActivate(_firstName, _lastName);
>                 return _basicInput2;
>         }
>
>         public String getFirstName() {
>                 return _firstName;
>         }
>
>         public String getLastName() {
>                 return _lastName;
>         }
>
>         public void setFirstName(String firstName) {
>                 _firstName = firstName;
>         }
>
>         public void setLastName(String lastName) {
>                 _lastName = lastName;
>         }
> }
>
> The stacktrace:
>
>
> 23:10:48,546 ERROR [RequestExceptionHandler] Processing of request
> failed with uncaught exception:
> org.apache.tapestry.runtime.ComponentEventException
> org.apache.tapestry.runtime.ComponentEventException [at
> classpath:jumpstart/web/pages/examples/input/BasicInput1.tml, line 7,
> column 34]
>         at
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.triggerEvent(ComponentPageElementImpl.java:
> 973)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentEventRequestHandlerImpl
> .handle(ComponentEventRequestHandlerImpl.java:62)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .ImmediateActionRenderResponseFilter
> .handle(ImmediateActionRenderResponseFilter.java:42)
>         at
> $
> ComponentEventRequestHandler_117ab99912a
> .handle($ComponentEventRequestHandler_117ab99912a.java)
>         at
> org
> .apache.tapestry.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
>         at
> $
> ComponentEventRequestHandler_117ab99912a
> .handle($ComponentEventRequestHandler_117ab99912a.java)
>         at org.apache.tapestry.services.TapestryModule
> $39.handle(TapestryModule.java:2071)
>         at
> $
> ComponentEventRequestHandler_117ab99912a
> .handle($ComponentEventRequestHandler_117ab99912a.java)
>         at
> $
> ComponentEventRequestHandler_117ab99902f
> .handle($ComponentEventRequestHandler_117ab99902f.java)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:133)
>         at $Dispatcher_117ab999030.dispatch($Dispatcher_117ab999030.java)
>         at $Dispatcher_117ab999024.dispatch($Dispatcher_117ab999024.java)
>         at org.apache.tapestry.services.TapestryModule
> $13.service(TapestryModule.java:924)
>         at
> org
> .apache
> .tapestry
> .internal.services.LocalizationFilter.service(LocalizationFilter.java:
> 43)
>         at
> $RequestHandler_117ab999025.service($RequestHandler_117ab999025.java)
>         at org.apache.tapestry.services.TapestryModule
> $3.service(TapestryModule.java:516)
>         at
> $RequestHandler_117ab999025.service($RequestHandler_117ab999025.java)
>         at org.apache.tapestry.services.TapestryModule
> $2.service(TapestryModule.java:491)
>         at
> $RequestHandler_117ab999025.service($RequestHandler_117ab999025.java)
>         at
> org
> .apache
> .tapestry
> .internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:
> 53)
>         at $RequestFilter_117ab999023.service($RequestFilter_117ab999023.java)
>         at
> $RequestHandler_117ab999025.service($RequestHandler_117ab999025.java)
>         at
> org
> .apache
> .tapestry
> .internal.services.StaticFilesFilter.service(StaticFilesFilter.java:79)
>         at
> $RequestHandler_117ab999025.service($RequestHandler_117ab999025.java)
>         at org.apache.tapestry.internal.services.CheckForUpdatesFilter
> $2.invoke(CheckForUpdatesFilter.java:93)
>         at org.apache.tapestry.internal.services.CheckForUpdatesFilter
> $2.invoke(CheckForUpdatesFilter.java:84)
>         at
> org
> .apache
> .tapestry
> .ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77)
>         at
> org
> .apache
> .tapestry
> .internal
> .services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106)
>         at
> $RequestHandler_117ab999025.service($RequestHandler_117ab999025.java)
>         at
> $RequestHandler_117ab99901d.service($RequestHandler_117ab99901d.java)
>         at org.apache.tapestry.services.TapestryModule
> $12.service(TapestryModule.java:904)
>         at
> $
> HttpServletRequestHandler_117ab99901c
> .service($HttpServletRequestHandler_117ab99901c.java)
>         at 
> org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:164)
>         at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 235)
>         at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at
> org
> .jboss
> .web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:
> 96)
>         at
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 235)
>         at
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at
> org
> .apache
> .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
> 230)
>         at
> org
> .apache
> .catalina.core.StandardContextValve.invoke(StandardContextValve.java:
> 175)
>         at
> org
> .jboss
> .web
> .tomcat
> .security
> .SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
>         at
> org
> .jboss
> .web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
>         at
> org
> .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
> 127)
>         at
> org
> .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
> 102)
>         at
> org
> .jboss
> .web
> .tomcat
> .service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:
> 157)
>         at
> org
> .apache
> .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
> 262)
>         at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
> 844)
>         at org.apache.coyote.http11.Http11Protocol
> $Http11ConnectionHandler.process(Http11Protocol.java:583)
>         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:
> 446)
>         at java.lang.Thread.run(Thread.java:613)
> Caused by: org.apache.tapestry.runtime.ComponentEventException
>         at
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.triggerEvent(ComponentPageElementImpl.java:
> 973)
>         at
> org
> .apache
> .tapestry
> .internal
> .structure
> .InternalComponentResourcesImpl
> .triggerEvent(InternalComponentResourcesImpl.java:154)
>         at org.apache.tapestry.corelib.components.Form.onAction(Form.java:388)
>         at
> org
> .apache
> .tapestry.corelib.components.Form.dispatchComponentEvent(Form.java)
>         at
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:
> 840)
>         at
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.triggerEvent(ComponentPageElementImpl.java:
> 954)
>         ... 50 more
> Caused by: java.lang.NullPointerException
>         at
> org
> .apache
> .tapestry
> .internal
> .TapestryInternalUtils
> .escapePercentAndSlash(TapestryInternalUtils.java:514)
>         at
> org
> .apache
> .tapestry
> .internal
> .TapestryInternalUtils.encodeContext(TapestryInternalUtils.java:504)
>         at
> org
> .apache
> .tapestry
> .internal
> .services.ComponentInvocationImpl.getPath(ComponentInvocationImpl.java:
> 101)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentInvocationImpl.buildURI(ComponentInvocationImpl.java:60)
>         at
> org.apache.tapestry.internal.services.LinkImpl.buildURI(LinkImpl.java:
> 105)
>         at
> org
> .apache
> .tapestry.internal.services.LinkImpl.toRedirectURI(LinkImpl.java:120)
>         at
> org
> .apache
> .tapestry
> .internal.services.ResponseImpl.sendRedirect(ResponseImpl.java:69)
>         at $Response_117ab999079.sendRedirect($Response_117ab999079.java)
>         at $Response_117ab999012.sendRedirect($Response_117ab999012.java)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .ActionRenderResponseGeneratorImpl
> .generateResponse(ActionRenderResponseGeneratorImpl.java:45)
>         at
> $
> ActionRenderResponseGenerator_117ab999014
> .generateResponse($ActionRenderResponseGenerator_117ab999014.java)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentInstanceResultProcessor
> .processResultValue(ComponentInstanceResultProcessor.java:53)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentInstanceResultProcessor
> .processResultValue(ComponentInstanceResultProcessor.java:25)
>         at
> $
> ComponentEventResultProcessor_117ab99912d
> .processResultValue($ComponentEventResultProcessor_117ab99912d.java)
>         at
> $
> ComponentEventResultProcessor_117ab99912e
> .processResultValue($ComponentEventResultProcessor_117ab99912e.java)
>         at
> $
> ComponentEventResultProcessor_117ab999031
> .processResultValue($ComponentEventResultProcessor_117ab999031.java)
>         at
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentResultProcessorWrapper
> .handleResult(ComponentResultProcessorWrapper.java:43)
>         at org.apache.tapestry.internal.structure.ComponentPageElementImpl
> $13.handleResult(ComponentPageElementImpl.java:936)
>         at
> org
> .apache
> .tapestry.internal.services.EventImpl.storeResult(EventImpl.java:60)
>         at 
> jumpstart.web.pages.examples.input.BasicInput1.dispatchComponentEvent
> (BasicInput1.java)
>         at
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:
> 832)
>         at
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.triggerEvent(ComponentPageElementImpl.java:
> 954)
>         ... 55 more
>
> The exception page:
>
> An unexpected application exception has occurred.
>
> org.apache.tapestry.runtime.ComponentEventException
> context
> [Ljava.lang.String;@830a79
> eventType
> action
> location
> classpath:jumpstart/web/pages/examples/input/BasicInput1.tml, line 7,
> column 34
> 2       <body>
> 3               <h1>Basic Input (1)</h1>
> 4
> 5               This page demonstrates the Form component with TextField 
> components
> and submit button handling.  It does no validation.<br/><br/>
> 6
> 7               <form t:type="form" t:id="form">
> 8                       <table>
> 9                               <tr>
> 10                                      <td>First Name:</td>
> 11                                      <td><input t:type="TextField" 
> value="firstName"/></td>
> 12                              </tr>
> org.apache.tapestry.runtime.ComponentEventException
> context
> [Ljava.lang.String;@830a79
> eventType
> success
> java.lang.NullPointerException
> Stack trace
> org
> .apache
> .tapestry
> .internal
> .TapestryInternalUtils
> .escapePercentAndSlash(TapestryInternalUtils.java:514)
> org
> .apache
> .tapestry
> .internal
> .TapestryInternalUtils.encodeContext(TapestryInternalUtils.java:504)
> org
> .apache
> .tapestry
> .internal
> .services.ComponentInvocationImpl.getPath(ComponentInvocationImpl.java:
> 101)
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentInvocationImpl.buildURI(ComponentInvocationImpl.java:60)
> org.apache.tapestry.internal.services.LinkImpl.buildURI(LinkImpl.java:
> 105)
> org
> .apache
> .tapestry.internal.services.LinkImpl.toRedirectURI(LinkImpl.java:120)
> org
> .apache
> .tapestry
> .internal.services.ResponseImpl.sendRedirect(ResponseImpl.java:69)
> org
> .apache
> .tapestry
> .internal
> .services
> .ActionRenderResponseGeneratorImpl
> .generateResponse(ActionRenderResponseGeneratorImpl.java:45)
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentInstanceResultProcessor
> .processResultValue(ComponentInstanceResultProcessor.java:53)
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentInstanceResultProcessor
> .processResultValue(ComponentInstanceResultProcessor.java:25)
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentResultProcessorWrapper
> .handleResult(ComponentResultProcessorWrapper.java:43)
> org.apache.tapestry.internal.structure.ComponentPageElementImpl
> $13.handleResult(ComponentPageElementImpl.java:936)
> org
> .apache
> .tapestry.internal.services.EventImpl.storeResult(EventImpl.java:60)
> jumpstart
> .web
> .pages
> .examples.input.BasicInput1.dispatchComponentEvent(BasicInput1.java)
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:
> 832)
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.triggerEvent(ComponentPageElementImpl.java:
> 954)
> org
> .apache
> .tapestry
> .internal
> .structure
> .InternalComponentResourcesImpl
> .triggerEvent(InternalComponentResourcesImpl.java:154)
> org.apache.tapestry.corelib.components.Form.onAction(Form.java:388)
> org
> .apache
> .tapestry.corelib.components.Form.dispatchComponentEvent(Form.java)
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:
> 840)
> org
> .apache
> .tapestry
> .internal
> .structure
> .ComponentPageElementImpl.triggerEvent(ComponentPageElementImpl.java:
> 954)
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentEventRequestHandlerImpl
> .handle(ComponentEventRequestHandlerImpl.java:62)
> org
> .apache
> .tapestry
> .internal
> .services
> .ImmediateActionRenderResponseFilter
> .handle(ImmediateActionRenderResponseFilter.java:42)
> org
> .apache.tapestry.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
> org.apache.tapestry.services.TapestryModule
> $39.handle(TapestryModule.java:2071)
> org
> .apache
> .tapestry
> .internal
> .services
> .ComponentEventDispatcher.dispatch(ComponentEventDispatcher.java:133)
> org.apache.tapestry.services.TapestryModule
> $13.service(TapestryModule.java:924)
> org
> .apache
> .tapestry
> .internal.services.LocalizationFilter.service(LocalizationFilter.java:
> 43)
> org.apache.tapestry.services.TapestryModule
> $3.service(TapestryModule.java:516)
> org.apache.tapestry.services.TapestryModule
> $2.service(TapestryModule.java:491)
> org
> .apache
> .tapestry
> .internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:
> 53)
> org
> .apache
> .tapestry
> .internal.services.StaticFilesFilter.service(StaticFilesFilter.java:79)
> org.apache.tapestry.internal.services.CheckForUpdatesFilter
> $2.invoke(CheckForUpdatesFilter.java:93)
> org.apache.tapestry.internal.services.CheckForUpdatesFilter
> $2.invoke(CheckForUpdatesFilter.java:84)
> org
> .apache
> .tapestry
> .ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:77)
> org
> .apache
> .tapestry
> .internal
> .services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:106)
> org.apache.tapestry.services.TapestryModule
> $12.service(TapestryModule.java:904)
> org.apache.tapestry.TapestryFilter.doFilter(TapestryFilter.java:164)
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 235)
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> org
> .jboss
> .web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:
> 96)
> org
> .apache
> .catalina
> .core
> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
> 235)
> org
> .apache
> .catalina
> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> org
> .apache
> .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
> 230)
> org
> .apache
> .catalina.core.StandardContextValve.invoke(StandardContextValve.java:
> 175)
> org
> .jboss
> .web
> .tomcat
> .security
> .SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
> org
> .jboss
> .web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
> org
> .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
> 127)
> org
> .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
> 102)
> org
> .jboss
> .web
> .tomcat
> .service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:
> 157)
> org
> .apache
> .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
> 262)
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
> 844)
> org.apache.coyote.http11.Http11Protocol
> $Http11ConnectionHandler.process(Http11Protocol.java:583)
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
> java.lang.Thread.run(Thread.java:613)
> Request
>
> Context Path
> /jumpstart
> Request Path
> /examples/input/basicinput1.form
> Locale
> en_US
> Query Parameters
> t:formdata
> H4sIAAAAAAAAAFvzloG1XI1BJbUiMbcgJ7VYPzOvoLRE3ymxODPZE8Q0tCpJrShJy0zNSSkuYrDKL0rXSyxITM5I1StJLEgtLimq1EvOL0rNyUzSS0osTtVzTAKKJSaXuIF0qASnlpQWOCaXZObnqYYe5n4oevwPEwOjDwNPfGpOam5qXolfYm5qCYOQT1ZiWaJ+TmJeun5wSVFmXrp1RUEJAyfcahKc6EaiEwOK8pNTi4uDS5NyM4uLgQ6FOPfwuhSTtG/zzjExMFQUlGswqBFjfbxBcSFDHQNDCQM3khjxukGaWQGx57eLkwEAAA==
> textfield
> textfield_0
> b
> Headers
> accept
> text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/
> plain;q=0.8,image/png,*/*;q=0.5
> accept-encoding
> gzip, deflate
> accept-language
> en-us
> connection
> keep-alive
> content-length
> 366
> content-type
> application/x-www-form-urlencoded
> cookie
> JSESSIONID=943A0DC434B21C8F518EC434709F7F2C
> host
> localhost:8180
> referer
> http://localhost:8180/jumpstart/examples/input/basicinput1
> user-agent
> Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/523.10.6
> (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6
> Session
>
> state:Start:form:defaultTracker
> [EMAIL PROTECTED]
> state:examples/input/BasicInput1:form:defaultTracker
> [EMAIL PROTECTED]
>
> Cheers,
>
> Geoff
>
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to