title: validation failing yet its still running execute on struts2
body: <p>im doing a modification on an existing app.  my problem is even tho the validation fails for the form submit, its still executing the execute method.  </p>
  
  <p>my struts file</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
  &lt;!DOCTYPE struts PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  "http://struts.apache.org/dtds/struts-2.0.dtd"&gt;
  
  &lt;struts&gt;
  &lt;!-- &lt;include file="com/paritysys/util/struts.xml" /&gt; --&gt;
  
  &lt;constant name="struts.url.includeParams" value="none" /&gt;
  &lt;constant name="struts.action.extension" value="html,action" /&gt;
  
  &lt;package name="public" extends="struts-default"&gt;
      &lt;interceptors&gt;
          &lt;interceptor name="websiteOnline"
              class="parity.action.website.OnlineInterceptor" /&gt;
          &lt;interceptor name="websiteLogin"
              class="parity.action.website.LoginInterceptor" /&gt;
  
          &lt;interceptor-stack name="appStack"&gt;
              &lt;interceptor-ref name="validation"&gt;
                  &lt;param name="excludeMethods"&gt;input,back,cancel,browse&lt;/param&gt;
              &lt;/interceptor-ref&gt;
              &lt;!-- &lt;interceptor-ref name="paritySessionStack"/&gt; --&gt;
              &lt;interceptor-ref name="websiteOnline" /&gt;
              &lt;interceptor-ref name="websiteLogin" /&gt;
          &lt;/interceptor-stack&gt;
      &lt;/interceptors&gt;
  
      &lt;default-interceptor-ref name="appStack" /&gt;
  
      &lt;global-results&gt;
          &lt;result name="login" type="redirectAction"&gt;
              &lt;param name="actionName"&gt;index&lt;/param&gt;
          &lt;/result&gt;
          &lt;result name="exception" type="freemarker"&gt;/public/error.html.ftl&lt;/result&gt;
          &lt;result name="error" type="freemarker"&gt;/public/error.html.ftl&lt;/result&gt;
          &lt;result type="freemarker" name="maintenance"&gt;/public/maintenance.html
          &lt;/result&gt;
          &lt;result type="freemarker" name="pre-offline"&gt;/public/pre-offline.html
          &lt;/result&gt;
          &lt;result type="freemarker" name="post-offline"&gt;/public/post-offline.html
          &lt;/result&gt;
      &lt;/global-results&gt;
  
      &lt;action name="index" class="parity.action.website.LoginAction"&gt;
          &lt;result type="freemarker" name="success"&gt;/public/index.html.ftl&lt;/result&gt;
      &lt;/action&gt;
  
      &lt;action name="login" class="parity.action.website.SubmitLoginAction"&gt;
          &lt;result type="freemarker" name="success"&gt;/public/questionnaire.html.ftl
          &lt;/result&gt;
          &lt;result type="freemarker" name="input"&gt;/public/index.html.ftl&lt;/result&gt;
      &lt;/action&gt;
  
      &lt;action name="submit" class="parity.action.website.SubmitQuestionnaireAction"&gt;
          &lt;result type="freemarker" name="success"&gt;/public/thanks.html.ftl
          &lt;/result&gt;
          &lt;result type="freemarker" name="input"&gt;/public/questionnaire.html.ftl
          &lt;/result&gt;
      &lt;/action&gt;
  
      &lt;action name="whereIsMyId" class="parity.action.website.LoginAction"&gt;
          &lt;result type="freemarker" name="success"&gt;/public/whereIsMyId.html.ftl
          &lt;/result&gt;
      &lt;/action&gt;
  
      &lt;action name="loadCollegeFinder" class="parity.action.website.LoadCollegeFinderAction"&gt;
          &lt;result type="freemarker" name="success"&gt;/public/college_finder.html.ftl
          &lt;/result&gt;
      &lt;/action&gt;
  
      &lt;action name="findCollege" class="parity.action.website.FindCollegeAction"&gt;
          &lt;result type="freemarker" name="success"&gt;/public/college_finder.html.ftl
          &lt;/result&gt;
          &lt;result type="freemarker" name="input"&gt;/public/college_finder.html.ftl
          &lt;/result&gt;
      &lt;/action&gt;
  &lt;/package&gt;
  </code></pre>
  
  <p></p>
  
  <p>my action class code</p>
  
  <pre><code>public void validate() {
          logger.debug("validate fired");
  Bla bla bla
  addFieldError("username","error");
  
          if (hasFieldErrors()) {
              logger.debug("Field errors is true");
          }
      }
  
      public String execute() throws Exception {
          logger.debug("execute firing");
  
          return result;
      }
  </code></pre>
  
  <p>any ideas why this would happen?  for some reason even tho the login.action is failing, its still sending down the success return and moving forward.</p>