Uploaded image for project: 'Struts 2'
  1. Struts 2
  2. WW-3954

Ajax Validation is broken (json)

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 2.3.1, 2.3.1.1, 2.3.1.2, 2.3.3, 2.3.4, 2.3.4.1
    • Fix Version/s: 2.3.12
    • Component/s: Plugin - JSON
    • Labels:
      None
    • Environment:

      Struts 2.3.4.1, Jquery 1.3.1, Struts json plugin 2.3.4.1

    • Flags:
      Patch, Important

      Description

      Hello,

      I have find an issue on Struts 2.3.4.1. I have made a migration from Struts 2.1.8 to Struts 2.3.4.1 and I have seen that the Ajax Validation doesn't work anymore.

      Moreover, when I would like to make the validation of my form in Ajax I seen that response was already "success" even if one or more fields are in errors. I think it's not normal. In Struts 2.1.8 when fields are in errors the response of an Ajax call is "error" not "success"

      To correct this issue I have made a workaround. In the JSONValidationInterceptor, if the buildResponse method have "/" in the first append and "/" in the last it correct the problem...

      why this :

      protected String buildResponse(ValidationAware validationAware) {
              //should we use FreeMarker here?
              StringBuilder sb = new StringBuilder();
              sb.append("/* { ");
      
      
              ...
      
      
              sb.append("} */");
              /*response should be something like:
               * {
               *      "errors": ["this", "that"],
               *      "fieldErrors": {
               *            field1: "this",
               *            field2: "that"
               *      }
               * }
               */
              return sb.toString();
          }
      

      as been replaced by this :

      protected String buildResponse(ValidationAware validationAware) {
              //should we use FreeMarker here?
              StringBuilder sb = new StringBuilder();
              sb.append("{ ");
      
      
              ***
      
      
              sb.append("}");
              /*response should be something like:
               * {
               *      "errors": ["this", "that"],
               *      "fieldErrors": {
               *            field1: "this",
               *            field2: "that"
               *      }
               * }
               */
              return sb.toString();
          }
      

      Is this a real issue ?

        Attachments

        1. testAjaxValidation.zip
          119 kB
          COMBEAU

          Activity

            People

            • Assignee:
              lukaszlenart Lukasz Lenart
              Reporter:
              walkn COMBEAU
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: