2012-10-05 2 views
6

Я хочу отправить свой объект JSON из Javscript в Struts2 Action.JSON JQery to Struts2 action

Пример JSON объект

{ 
     "lists":["list1","list2","list3","list4","list5"], 
     "maps": { 
      "key4":"value4","key3":"value3","key5":"value5","key2":"value2","key1":"value1" 
     }, 
     "number1":123456789, 
     "numberarray1":[1,2,3,4,5,6,7,8,9], 
     "string1":"A", 
     "stringarray1":["A1","B1"] 
    } 

Мой Jquery Ajax

$.ajax({ 
    type: 'POST', 
    url: 'json/JSON.action', 
    data: JSON.stringify(data), 
    dataType: 'json', 
    async: false , 
    contentType: 'application/json; charset=utf-8', 
    success: function(){window.alert('Done');} 
}); 

Struts.xml конфигурации

<action name="JSON" class="com.actions.json.JsonAction" method="getJSON"> 
    <result type="json"/> 
</action> 

Мой Действие Класс

public class JsonAction extends ActionSupport { 


    private String data; 


    public String getJSON() { 


     return ActionSupport.SUCCESS; 
    } 

    public String getData() { 
     return data; 
    } 

    public void setData(String data) { 
     this.data = data; 
    } 



} 

Моя проблема в том, как получить объект JSON в классе Action.

Примечание: ПОСТ объекта JSON успешно .. Я просто не знаю, как получить его с помощью класса действий .. ПОМОГИТЕ Спасибо

+0

Вы можете поделиться своим классом Action. Также вы также определили тип результата json в вашем struts.xml и определенный перехватчик –

+0

'class =" coma, ctions.json.JsonAction "' typo в 'coma, ctions'? – Daniel

+0

ну, вы уже используете плагин (json), поэтому плагин способен достаточно заполнить ваш класс действий данными JSON, отправленными с запросом, все, что вам нужно, чтобы заботиться о json-формате и некоторых незначительных правилах, посмотреть на плагин Docs. –

ответ

6
  1. Существует опечатка в вашем struts.xml записи
  2. Вы определили результат плитки и перехватчик в struts.xml. Please see this link
  3. json, который вы отправляете на сервер, не содержит никаких ключей data. Поэтому он всегда будет нулевым. Поскольку json обозначается как объекты. Таким образом вам нужно преобразовать JSON в объекты Java.

подход 1.

Создать сеттеры для lists,maps,number1,numberarray1,string1 и так далее. В верхней части this link определяется способ его выполнения. Тогда вы можете получить доступ ко всем переменным таким образом.

Подход 2. В javascript определите новый объект.

var sentData ={}; 
sentData ["sentData "] = data; 
// And in your ajax call , 
data: JSON.stringify(sentData), 

И в вашем классе действий создайте геттеры и сеттеры для этого.

Map<K.V> sentData = new HashMap<K,V>(); 

Это даст вам весь объект json как карту.

+0

моя проблема в моих действиях всегда равна нулю – newbie

+0

я не понимаю – newbie

+0

не может сделать эту работу :( – newbie

Смежные вопросы