2012-10-05 33 views
6

Tôi muốn gửi đối tượng JSON của mình từ Javscript đến Hành động Struts2.JSON Jquery đến hành động Struts2

mẫu JSON Object

{ 
     "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"] 
    } 

My 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 cấu hình

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

My Vụ Kiện Tập Thể

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



} 

Vấn đề của tôi là cách nhận đối tượng JSON trong lớp hành động.

LƯU Ý: POST CÁC đối tượng JSON là thành công .. Tôi chỉ không biết làm thế nào để nhận được nó thông qua Vụ Kiện Tập Thể .. PLEASE HELP Cảm ơn bạn

+0

bạn có thể chia sẻ lớp Hành động của mình không. Ngoài ra, bạn cũng đã định nghĩa json kiểu kết quả trong struts.xml của bạn và được xác định là interceptor –

+0

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

+0

cũng bạn đã sử dụng plugin (json) để plugin đủ khả năng để điền vào lớp hành động của bạn với dữ liệu JSON được đăng từ yêu cầu, tất cả những gì bạn cần phải quan tâm về định dạng json và một số quy tắc nhỏ, hãy xem plugin tài liệu. –

Trả lời

6
  1. Có một lỗi đánh máy trong struts.xml mục nhập của bạn
  2. Bạn đã xác định kết quả lát gạch và bộ chặn trong struts.xml. Please see this link
  3. Json bạn đang gửi tới máy chủ, không chứa bất kỳ khóa nào data. Vì vậy, nó sẽ luôn luôn là null. Vì json được ký hiệu là đối tượng. Bạn cần chuyển đổi JSON thành các đối tượng Java theo cách này.

Cách tiếp cận 1.

Tạo setters cho lists,maps,number1,numberarray1,string1 và vân vân. Ở phía trên cùng của this link, được xác định cách thực hiện. Sau đó, bạn có thể truy cập tất cả các biến theo cách này.

Phương pháp tiếp cận 2. Trong javascript của bạn, hãy xác định một đối tượng mới.

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

Và trong lớp hành động của bạn, tạo getters và setters cho việc này.

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

Điều này sẽ cung cấp cho bạn toàn bộ đối tượng json dưới dạng Bản đồ.

+0

vấn đề của tôi là dữ liệu của tôi trong hành động luôn bằng null – newbie

+0

tôi không hiểu – newbie

+0

không thể thực hiện công việc này: ( – newbie

Các vấn đề liên quan