2013-01-21 27 views
6

Tôi đang sử dụng struts2-json-plugin-2.2.3.jar. và cố gắng để serialize filterList tài sản của lớp như thế này:includeProperties trong Json struts2 plugin không hoạt động

struts.xml đang

<action name="jsonUserFilterListAction" class="com.my.fitnessb.actions.UserArticlesAction" method="filterList"> 
     <result name="success" type="json"> 
      <param name="includeProperties">filterList</param> 
     </result> 
</action> 

Action lớp

public class UserArticlesAction extends ActionSupport implements SessionAware, ServletRequestAware { 

    private List<FilterType> filterList; 
    HttpServletRequest request; 

    public String filterList() { 
    filterList = new ArrayList<FilterType>(); 
    filterList.add(new FilterType(10, "Latest Articles")); 
    filterList.add(new FilterType(1, "Trending Articles")); 
    filterList.add(new FilterType(2, "Top Rated Articles")); 
    filterList.add(new FilterType(3, "Most Viewd Atricles")); 
    filterList.add(new FilterType(4, "All Atricles")); 
    return SUCCESS; 
    } 
    //setter & getter of filterList 
} 

nhưng tôi không thể nhận được tài sản của lớp FilterType này.

+0

bạn có thể nhận được giá trị nếu param 'includeProperties' Không được sử dụng? – Quincy

+0

Tôi đang nhận được seralize tất cả các thuộc tính trong lớp hành động nếu param includeProperties không được sử dụng –

Trả lời

6

Giả sử các trường trong bạn FilterType được đặt tên iddesc

Hãy thử

<param name="includeProperties"> 
filterList\[\d+\]\.id, 
filterList\[\d+\]\.desc 
</param> 
+1

Cảm ơn bạn rất nhiều, nó đã làm việc cho tôi. –

+0

Không có vấn đề, mặc dù nó hoạt động Tôi nghĩ rằng đó là cồng kềnh để liệt kê ra mỗi tài sản ...: / – Quincy

3

Plugin Struts2-json sẽ đánh giá tất cả các thuộc tính hành động của bạn trong lớp hành động.

Vấn đề của nó mà tôi đã gặp phải khi sử dụng plugin struts2-json. Mặc dù các plugin-doc hiển thị một ví dụ làm việc cho tham số includeProperties, nó không bao giờ làm việc cho tôi và không bao giờ làm sau rất nhiều thử nghiệm và googling. Vì vậy, tôi đã phải sử dụng excludeProperties để loại bỏ các nội dung không cần thiết để được tuần tự hóa, thay vì chỉ định những gì tôi muốn sắp xếp theo thứ tự.

+0

ohh ... là nó như vậy? Điều này là rất xấu tôi nghĩ, vì vậy tôi phải sử dụng excludeProperties để loại bỏ các nội dung không cần thiết từ được serialized, okay thanx ... tôi sẽ kiểm tra nó và lấy lại cho bạn nếu nó sẽ làm việc. Cảm ơn bạn một lần nữa ... buddy –

+0

tôi đã thử với plugin json 2.3.8, includeproperties hoạt động tốt. nếu nó không hoạt động trong dự án của bạn, bạn có thể theo dõi mã nguồn của json plugin (org.apache.struts2.json.JSONWriter) nó khá dễ dàng. – SalutonMondo

0

Trong trường hợp thích hương vị chú thích

@ParentPackage("json-default") 
@Namespace("/") 
@ResultPath(value = "/") 
@Results({ @Result(name="firstDir",type="json" 
,params = {"includeProperties","fileList\\[\\d+\\]"} 
) }) 

fileList = new ArrayList<String>(); 
     for (File img : folder.listFiles()) { 
      fileList.add(img.getName()); 
     } 
return "firstDir" 
Các vấn đề liên quan