2010-09-17 30 views
3

我有一个通过注释配置的Struts2动作类。所有使用@Action注解的“正常”方法都可以正常工作。带注释的Struts2 JSON插件

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

这里是我的类的下调版本(DAO与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; 
    } 
} 

任何人都可以帮助?如果我不得不去struts.xml路由,那就意味着把我所有的其他动作(可以正常工作)放入它。

回答

7

我想我会分享答案,因为任何有同样问题的人可能也会面临沉默。

我创建了两个动作:FeatureClassAction和FeatureClassJsonAction。 FeatureClassAction是这样的注释:

@ParentPackage("struts-default") 
@Namespace("/featureClass") 
public class FeatureClassAction extends ActionSupport { 

FeatureClassJsonAction被注释是这样的:

@ParentPackage("json-default") 
@Namespace("/featureClass") 
public class FeatureClassJsonAction extends ActionSupport { 

在JSON行动的方法注释是这样的:

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

public String getFeatureClassesJSON() throws Exception { 

希望它可以帮助别人。

+0

您能否让我知道您用来访问该操作的URL?无论我尝试了什么,它只是给了我“没有为命名空间[/ featureClass]映射的操作和与上下文路径[/ myapp]关联的操作名称[featureClassesJson]”。我试过http:// localhost:8080/myapp/featureClass/featureClassesJson.action和.do以及其他许多排列组合。 – msanjay 2013-02-08 12:16:03

+0

该网址应该是featureClass/featureClassesJson.action – Lyth 2013-04-15 14:05:26