title: Java - Struts 2: result 'null' not found
body: <p>I'm getting a 404 on an action and the message:</p>
  
  <p>result 'null' not found</p>
  
  <p>The mapping for the action is:</p>
  
  <pre><code>&lt;action name="startSubmission" class="startSubmissionAction"&gt;
      &lt;result type="redirectAction"&gt;
          &lt;param name="actionName"&gt;uploadFile&lt;/param&gt;
      &lt;/result&gt;
      &lt;result name="error"&gt;/jsp/main/bip/submssionError.jsp&lt;/result&gt;
  &lt;/action&gt;
  </code></pre>
  
  <p>I've tried various combinations - being more explicit - nothing works, latest version:</p>
  
  <pre><code>&lt;action name="startSubmission" class="startSubmissionAction" method="execute"&gt;
      &lt;result name="success" type="redirectAction"&gt;
          &lt;param name="actionName"&gt;uploadFile&lt;/param&gt;
      &lt;/result&gt;
      &lt;result name="error"&gt;/jsp/main/bip/submssionError.jsp&lt;/result&gt;
  &lt;/action&gt;
  </code></pre>
  
  <p>I've added a debug line in the action and it looks like it doesn't even get called - as nothing gets output.</p>
  
  <p>I upped the debugging on the logs and got:</p>
  
  <pre><code>[DEBUG] 2014-08-11 15:49:55,852 com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork2.DefaultTextProvider@7a754707], property=struts]
  [DEBUG] 2014-08-11 15:49:55,853 com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler - Entering nullPropertyValue [target=[com.opensymphony.xwork2.DefaultTextProvider@7a754707], property=struts]
  [DEBUG] 2014-08-11 15:49:55,853 com.opensymphony.xwork2.DefaultActionProxy - Creating an DefaultActionProxy for namespace [/] and action name [startSubmission]
  [DEBUG] 2014-08-11 15:49:55,853 com.opensymphony.xwork2.interceptor.I18nInterceptor - intercept '//startSubmission' {
  [DEBUG] 2014-08-11 15:49:55,853 com.opensymphony.xwork2.interceptor.I18nInterceptor - applied invocation context locale=en_GB
  [DEBUG] 2014-08-11 15:49:55,853 com.opensymphony.xwork2.interceptor.I18nInterceptor - before Locale=en_GB
  [DEBUG] 2014-08-11 15:49:55,854 com.opensymphony.xwork2.conversion.impl.InstantiatingNullHandler - Entering nullPropertyValue [target=[rang.ui.actions.submission.StartSubmissionAction@35d2bd5f, com.opensymphony.xwork2.DefaultTextProvider@7a754707], property=struts]
  [DEBUG] 2014-08-11 15:49:55,871 org.apache.struts2.interceptor.FileUploadInterceptor - Bypassing //startSubmission
  [DEBUG] 2014-08-11 15:49:55,871 com.opensymphony.xwork2.interceptor.StaticParametersInterceptor - Setting static parameters {}
  [DEBUG] 2014-08-11 15:49:55,871 com.opensymphony.xwork2.interceptor.ParametersInterceptor - Setting params NONE
  [DEBUG] 2014-08-11 15:49:55,871 com.opensymphony.xwork2.interceptor.ParametersInterceptor - Setting params serviceUserNumber =&gt; [ 123456 ] submissionType =&gt; [ LIVE ] 
  [DEBUG] 2014-08-11 15:49:55,871 com.opensymphony.xwork2.conversion.impl.XWorkConverter - Retrieving convert for class [class rang.ui.actions.submission.StartSubmissionAction] and property [serviceUserNumber]
  [DEBUG] 2014-08-11 15:49:55,995 com.opensymphony.xwork2.conversion.impl.XWorkConverter - Converter is null for property [serviceUserNumber]. Mapping size [0]:
  [DEBUG] 2014-08-11 15:49:55,995 com.opensymphony.xwork2.conversion.impl.XWorkConverter - field-level type converter for property [serviceUserNumber] = none found
  [DEBUG] 2014-08-11 15:49:55,995 com.opensymphony.xwork2.conversion.impl.XWorkConverter - global-level type converter for property [serviceUserNumber] = none found
  [DEBUG] 2014-08-11 15:49:55,995 com.opensymphony.xwork2.conversion.impl.XWorkConverter - falling back to default type converter [com.opensymphony.xwork2.conversion.impl.XWorkBasicConverter@44158e17]
  [DEBUG] 2014-08-11 15:49:55,995 com.opensymphony.xwork2.conversion.impl.XWorkConverter - Retrieving convert for class [class rang.ui.actions.submission.StartSubmissionAction] and property [submissionType]
  [DEBUG] 2014-08-11 15:49:55,996 com.opensymphony.xwork2.conversion.impl.XWorkConverter - field-level type converter for property [submissionType] = none found
  [DEBUG] 2014-08-11 15:49:55,996 com.opensymphony.xwork2.conversion.impl.XWorkConverter - global-level type converter for property [submissionType] = none found
  [DEBUG] 2014-08-11 15:49:55,996 com.opensymphony.xwork2.conversion.impl.XWorkConverter - falling back to default type converter [com.opensymphony.xwork2.conversion.impl.XWorkBasicConverter@44158e17]
  [DEBUG] 2014-08-11 15:49:55,996 org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor - Validating //startSubmission with method execute.
  [DEBUG] 2014-08-11 15:49:56,251 com.opensymphony.xwork2.validator.ValidationInterceptor - Invoking validate() on action rang.ui.actions.submission.StartSubmissionAction@35d2bd5f
  [DEBUG] 2014-08-11 15:49:56,251 com.opensymphony.xwork2.interceptor.PrefixMethodInvocationUtil - cannot find method [validateExecute] in action [rang.ui.actions.submission.StartSubmissionAction@35d2bd5f]
  [DEBUG] 2014-08-11 15:49:56,251 com.opensymphony.xwork2.interceptor.PrefixMethodInvocationUtil - cannot find method [validateDoExecute] in action [rang.ui.actions.submission.StartSubmissionAction@35d2bd5f]
  [DEBUG] 2014-08-11 15:49:56,252 com.opensymphony.xwork2.DefaultActionInvocation - Executing action method = null
  [DEBUG] 2014-08-11 15:49:56,342 org.apache.struts2.dispatcher.ServletDispatcherResult - Forwarding to location null
  </code></pre>
  
  <p>Code for action:</p>
  
  <pre><code>     public String execute() throws Exception {
  
          if (!StringUtils.isNumeric(serviceUserNumber)||serviceUserNumber.length()!=6) {
              super.addActionError("servce user number must be 6 numeric characters only!");
              return ERROR;
          }
  
          logger.debug("submission object created for SUN: " + this.serviceUserNumber + " submission type: " + this.submissionType);
  
          return SUCCESS;
      }
  </code></pre>
  
  <p>Spring config:</p>
  
  <pre><code>&lt;bean id="startSubmissionAction" class="rang.ui.actions.submission.StartSubmissionAction"&gt;
  &lt;/bean&gt;
  </code></pre>
  
  <p>The upload file action:</p>
  
  <pre><code>&lt;action name="uploadFile" class="uploadFileAction"&gt;
      &lt;result&gt;/jsp/main/bip/uploadFile.jsp&lt;/result&gt;
      &lt;result name="error"&gt;/jsp/main/bip/submssionError.jsp&lt;/result&gt;
  &lt;/action&gt;
  </code></pre>
  
  <p>Other actions in this project work fine.  The action is Spring mapped and that is all OK.</p>
  
  <p>Any ideas?</p>