2010-08-18 31 views
9

Tôi gặp sự cố khi gửi tham số mảng tới lớp hành động Struts 2. Tôi đang sử dụng struts 2.1.8.1.Tham số mảng HTTP với Struts 2 qua cuộc gọi Ajax

Dưới đây là một số mã ví dụ:

public class MyAction extends ActionSupport { 

    private String[] types; 

    public String execute() { 
     return SUCCESS; 
    } 

    public String[] getTypes() { 
     return types; 
    } 

    public void setTypes(String[] types) { 
     this.types = types; 
    } 
} 

Vấn đề là khi gửi một mảng thông qua phương thức jquery ajax:

$.ajax({ 
    type: 'POST', 
    url: 'Myaction.action', 
    data: { 
     types: ["this", "is", "a", "test"] 
    } 
}); 

gây ra một ngoại lệ xảy ra:

ognl.ParseException: Encountered " "]" "] "" at line 1, column 7.

Làm cách nào tôi có thể sử dụng jQuery để gửi mảng tới Struts2 ac của tôi lớp tion? Có thứ gì đó dọc theo đường kẻ đánh chặn mà tôi cần đưa vào không? Hoặc là có một tùy chọn trong jQuery để loại bỏ điều này?

Tôi cũng gặp sự cố này với điều khiển có thể sắp xếp giao diện người dùng jQuery, nhưng tôi đã giải quyết bằng cách sử dụng regex để xóa ký tự "[]". Tôi muốn tránh điều đó, bởi vì giải pháp đó làm phiền tôi. Tôi cho rằng tôi có thể tự mình xây dựng chuỗi, thay vì sử dụng ký hiệu đối tượng, nhưng trừ khi bạn có thể thuyết phục tôi bằng cách khác, tôi muốn sử dụng ký hiệu đối tượng thay thế.

Trả lời

13

IIRC Struts không thích định dạng jQuery 1.4+, bạn có thể sử dụng định dạng truyền thống, mặc dù chỉ cần đặt này bất cứ lúc nào trước khi $.ajax() cuộc gọi của bạn:

$.ajaxSettings.traditional = true; 

Bạn có thể đọc thêm về mặc định 1.4+ so với tuần tự hóa truyền thống trong số $.param() documentation, minh họa tốt nhất là ví dụ ngắn của họ:

// <=1.3.2: (traditional in 1.4+) 
$.param({ a: [2,3,4] }) // "a=2&a=3&a=4" 
// >=1.4: (default in 1.4+) 
$.param({ a: [2,3,4] }) // "a[]=2&a[]=3&a[]=4" 
+0

Điều đó hoạt động hoàn hảo, cảm ơn. – partkyle

+1

Ok ... Làm thế nào tôi có thể cập nhật những thay đổi nhỏ nhưng quan trọng này? Cảm ơn câu trả lời của bạn theo cách – rsilva4

+0

Trả lời nhận xét của riêng tôi: http://api.jquery.com/category/version/1.4/ – rsilva4

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