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

Ajax Validation is broken (json)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 2.3.1, 2.3.1.1, 2.3.1.2, 2.3.3, 2.3.4, 2.3.4.1
    • 2.3.12
    • Plugin - JSON
    • None
    • Struts 2.3.4.1, Jquery 1.3.1, Struts json plugin 2.3.4.1

    • 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

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

            Dates

              Created:
              Updated:
              Resolved: