带注释的Struts2 JSON插件

Jas*_*son 3 json struts2

我有一个通过注释配置的Struts2 Action类.所有使用@Action注释的"普通"方法都可以正常工作.

但是,我需要在返回JSON的操作中添加一个方法.

这是我班级的精简版(用Spring自动装配):

@Namespace("featureClass")
// define success and input actions for class here
public class FeatureClassAction extends ActionSupport {

    FeatureClassDao featureClassDao;

    @Autowired
    public setFeatureClassDao(FeatureClassDeao featureClassDao) {
        this.featureClassDao = featureClassDao;
    }

    List<FeatureClass> featureClasses;

    // snip normal actions

    @Action("/featureClassesJSON")
    @JSON
    public String getFeatureClassesJSON() throws Exception {

        featureClasses = featureClassDao.getAll();
        return SUCCESS;
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?如果我必须使用struts.xml路由,这意味着将所有其他操作(可以正常工作)移入其中.

Jas*_*son 7

我想我会分享答案,因为其他有同样问题的人也可能会面对沉默.

我创建了两个动作:FeatureClassAction和FeatureClassJsonAction.FeatureClassAction注释如下:

@ParentPackage("struts-default")
@Namespace("/featureClass")
public class FeatureClassAction extends ActionSupport {
Run Code Online (Sandbox Code Playgroud)

FeatureClassJsonAction注释如下:

@ParentPackage("json-default")
@Namespace("/featureClass")
public class FeatureClassJsonAction extends ActionSupport {
Run Code Online (Sandbox Code Playgroud)

JSON Action中的方法注释如下:

@Action(value="featureClassesJson", results = {
    @Result(name="success", type="json")
})

public String getFeatureClassesJSON() throws Exception {
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助某人.