如何使用Struts2 REST插件创建自定义方法

时间:2014-11-02 17:49:59

标签: java rest struts2 struts2-rest-plugin

我的问题涉及在动作中创建自定义方法。我使用Struts2和Rest插件来实现Restful WebService。我的动作类如下:

public class SampleController implements ModelDriven<Object> {

private Sample sample = new Sample();
private Collection<Sample> list;
private int id;

public HttpHeaders create() {
    sdao.save(sample);
    return new DefaultHttpHeaders("create");
}   


public HttpHeaders destroy() {
    return new DefaultHttpHeaders("destroy");
}

public HttpHeaders show() {
    return new DefaultHttpHeaders("show").disableCaching();
}

public HttpHeaders update() {
    sdao.save(sample);
    return new DefaultHttpHeaders("update");
}

public HttpHeaders index() {
    list = sdao.findAll();
    return new DefaultHttpHeaders("index").disableCaching();
}

public Object getModel() {
    return (list != null ? list : sample);
}


public int getId() {
    return id;
}

public void setId(Integer id) {
    if (id != null) {
        this.sample = (Sample) sdao.findById(id);
    }
    this.id = id;
}

}

我可以通过GET http方法正确访问资源。为了使用自定义方法,通过将参数传递给搜索资源来调用,即

public searchBySenderName(String senderName) {
    list.addAll(sdao.findBySenderName(senderName))
}    

正确的程序是什么?如何通过GET以下URL调用它?

1 个答案:

答案 0 :(得分:0)

您可以根据案例GETindexshow)的任何预定义方法调用自定义方法,请参阅RESTful URL mapping logic

  

RESTful URL Mapping Logic

     

这个Restful动作映射器强制执行Ruby-On-Rails REST样式的映射。   如果未指定方法(通过&#39;!&#39;或&#39;方法:&#39;前缀),   方法是猜测&#34;使用REST样式的约定来检查   URL和HTTP方法。我们特别注意确保这一点   mapper与codebehind插件一起正常工作,以便XML   配置是不必要的。


当然,您可以更改动作映射器使用的方法名称,但它会影响整个应用程序。如果您已经占用了资源URL,那么您应该使用另一个来执行其工作。如果您使用严格的rest映射器,则会出现这种情况。在mixed mode中,您可以将常规操作映射到某个操作方法。

  

REST和非RESTful URL的Together Configuration

     

如果您想在REST旁边继续使用一些非RESTful URL   那些东西,那么你必须提供一个利用的配置   对于地图制作者。

     

插件包含自己的配置。如果你看看休息   插件jar,你会看到struts-plugin.xml并且你会看到   插件所做的一些配置设置。通常,插件只是   以你想要的方式设置东西。您可能经常需要覆盖   这些设置位于您自己的struts.xml


最后,您无法通过!method:前缀指定方法,因为它受默认配置的限制。