سؤال

I am using struts2-json-plugin-2.2.3.jar. and trying to serialize filterList property of class like this:

struts.xml code

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

Action class

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
}

but I'm not able to get this property of FilterType class.

هل كانت مفيدة؟

المحلول

Assuming the fields in your FilterType are named id and desc

Try

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

نصائح أخرى

Struts2-json plugin will seralize your all action attributes in the action class.

Its a problem that I had faced using struts2-json-plugin. Even though the plugin-doc show a working examples for includeProperties parameter, it never worked for me and never did after so many trials and googling. So i had to use excludeProperties to remove non-required contents from being serialized, instead of specifying what I want to serialize.

In case prefer the annotation flavor

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

You may try this:

<param name="includeProperties">
    filterList.*
</param>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top