[ 
http://issues.apache.org/struts/browse/WW-1577?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Don Brown resolved WW-1577.
---------------------------

    Resolution: Fixed
      Assignee: Don Brown

What is happening here is Struts (XWork really) can't find the Result that you 
had in mind.  I fixed the bug where the NPE would be thrown, but you'll still 
see an error for no result found.  Perhaps with the conversion problem it is 
looking for a result matching "input"?

> Improve handling of type conversion when loading action from URL
> ----------------------------------------------------------------
>
>                 Key: WW-1577
>                 URL: http://issues.apache.org/struts/browse/WW-1577
>             Project: Struts 2
>          Issue Type: Improvement
>          Components: Actions
>    Affects Versions: 2.0.1
>         Environment: tomcat 5.5.17, windows xp
>            Reporter: Dariusz Wojtas
>         Assigned To: Don Brown
>             Fix For: 2.0.3
>
>
> This issue came up to me several times, most recently when I tried to use 
> autocompleter.
> I have a property in my action:
>    private Integer carMakerId;   // + get/set methods
> After submitting a form with autocompleter
> the browser creates URL
>    /myApp/myAction.action?carMakerId=AUDI&carMakerIdKey=354
> Struts throws an exception:
> ----------------------
> 12:20:00,953 ERROR - Dispatcher                 - Could not execute action
> java.lang.NullPointerException
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation.createResult(DefaultActionInvocation.java:197)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:337)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
>       at 
> com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:115)
>       at 
> com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:217)
>       at 
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
>       at 
> com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:217)
>       at 
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
>       at 
> com.opensymphony.xwork2.interceptor.ParametersInterceptor.intercept(ParametersInterceptor.java:154)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:217)
>       at 
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
>       at 
> com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:219)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:217)
>       at 
> com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
>       at 
> com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:216)
>        [...]
> There is nothing wrong with the exception. Integer cannot be loaded with 
> String 'AUDI'. Clear.
> But there is ABSOLUTELY no hint in logs which property causes troubles. It 
> does not even suggest that this is because of some setter problem. Just 
> NullPointerException.
> And that is a real problem when form has 50+ properties and it's difficult to 
> find the reason.
> In the past I had similar problems with the dropdowndatetimepicker tag when 
> it automatically formatted selected date into format that was not understood 
> by struts validators.
> Please make it clear in logs what causes the problem.
> Even a message of type
>    Property 'propName' cannot be set with value '<put the value here>'.
> And 'NullPointerException' is not what I would expect here.
> I think it could
> a) fail as it does now - but with better messages in logs
> b) continue but with this property skipped + provide clear error/warn 
> messages in logs what happened.
> Maybe this could be configurable in struts.properties.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to