2016-06-03 20 views
0

Ich habe eine JSP, die Struts 2 jquery Tags verwendet.Struts2 jquery Aktion, die das gesamte Formular bei Erfolg zurückgibt

The form is : 

<s:form data-role="content" class="center-btn" id="sortForm" 
      theme="simple"> 
<s:textfield name="item" id="item"/> 
<s:textfield name="acc" id="acc"/> 
</s:form> 

Have a action: 

@Action(value = "getLPNDetails", results = { 
      @Result(name = SUCCESS, type = JSON, params = { "ignoreHierarchy", "false", "includeProperties", 
        "sortForm\\..*,actionMessages\\[\\d+\\], fieldErrors\\[\\d+\\], actionErrors\\[\\d+\\]" }), 
      @Result(name = INPUT, location = "sortMUIDMobile.jsp", params = { "ignoreHierarchy", "false", 
        "includeProperties", 
        "url\\..*, actionMessages\\[\\d+\\], fieldErrors\\[\\d+\\], actionErrors\\[\\d+\\]" }), 
      @Result(name = ERROR, location = "sortMUIDMobile.jsp", params = { "ignoreHierarchy", "false", 
        "includeProperties", 
        "sortForm\\..*, actionMessages\\[\\d+\\], fieldErrors\\[\\d+\\], actionErrors\\[\\d+\\]" }) }) 
    public String getLPNDetails() { 
} 

Was ich aus nenne:

function lpnFilter() { 
       var param = $('#sortForm').serialize(); 
       //var jsonValidationParam = "&struts.enableJSONValidation=true"; 
       //param = param + jsonValidationParam; 
       $.ajax({ 
        type : 'POST', 
        url : 'getLPNDetails', 
        data : param, 
        success : function(data) { 
         alert(JSON.stringify(data)); 
         //alert(data.lpn); 

        }, 
        async : false 
       }); 
       //$('#lpnDetails').show(); 
      } 

jetzt:

@Action(value = "getLPNDetails", results = { 
       @Result(name = SUCCESS, type = JSON, params = { "ignoreHierarchy", "false", "includeProperties", 
         "sortForm\\..*,actionMessages\\[\\d+\\], fieldErrors\\[\\d+\\], actionErrors\\[\\d+\\]" }), 

Ist das nicht alle Werte des Formulars zurück. Gibt es eine Möglichkeit, das zu tun?

+0

akzeptieren Sie die Antwort –

Antwort

0

Diese Konfiguration via Annotation, die das Ergebnis json zurückgibt, sollte den Parameter "includeProperties", "sortForm\..* haben. Alles andere ist nicht erforderlich, also könnte es von der Frage entfernt werden.

Jetzt möchten Sie sortForm Objekt von der Aktion zurückgeben. Stellen Sie sicher, dass sich die Aktions-Bean auf des Wertstacks befindet und Getter und Setter für sortForm und Getter und Setter für ihre Eigenschaften enthält. Das Formular sollte seine Eigenschaften an das sortForm-Objekt binden.

<s:form data-role="content" class="center-btn" id="sortForm" 
      theme="simple"> 
<s:textfield name="sortForm.item" id="item"/> 
<s:textfield name="sortForm.acc" id="acc"/> 
</s:form> 

Sicherstellen, dass die auf dem Classpath und übergeordnete Paket ist ein Nachkomme des json-default. Das übergeordnete Paket könnte durch @ParentPackage Annotation festgelegt werden oder Standard-XML-Konstante des übergeordneten Pakets verwenden. Dies ist erforderlich, um json Ergebnis zurückzugeben JSON-Objekt serialisiert von den Eigenschaften der Action-Bean.

@Result(type="json", params = {"includeProperties", "^sortForm\\..*"}) 

Diese Regex Ausdruck durch jede Eigenschaft des sortform Objekt, aber Sie müssen nur zwei Eigenschaften.

@Result(type="json", params = {"includeProperties", "^sortForm\\.item, ^sortForm\\.acc"})