2016-06-03 10 views
0

У меня есть JSP, который использует struts 2 jquery tags.Struts2 jquery action, возвращающий всю форму на успех

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() { 
} 

Что я звоню из:

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(); 
      } 

сейчас:

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

не возвращает все значения формы. Есть ли способ сделать это?

+0

принять ответ –

ответ

0

Эта конфигурация с помощью аннотации, которая возвращает результат json, должна иметь параметр "includeProperties", "sortForm\..*. Все остальное не требуется, поэтому его можно удалить из вопроса.

Теперь вы хотите вернуть sortForm объект из действия. Убедитесь, что компонент действия находится на top ценной бумаги и содержит геттеры и сеттеры для sortForm и геттеры и сеттеры для его свойств.

Форма должна связывать свои свойства с объектом sortForm.

<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> 

Убедитесь, что находится на упаковке пути к классам и родительским является потомком json-default. Родительский пакет может быть установлен аннотацией @ParentPackage или использовать константу xml по умолчанию родительского пакета. Это необходимо для результата json, чтобы вернуть объект JSON, сериализованный из свойств компонента компонента.

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

Это регулярное выражение матч каждое свойство sortform объекта, но вам нужно только два свойства.

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