的Spring MVC请求映射编程

问题描述:

在弹簧-MVC注释控制器:的Spring MVC请求映射编程

@RequestMapping(value = "/my") 
public class MyController { 
     @RequestMapping(value = "/something") 
     public doSomething() { 
     } 
     public String getPath() { 
      return "somethingElse"; 
     } 
} 

对于RESTful服务中,每个资源通常与域中的类别相关联。例如,对于User对象,通过POST进行更新的URL可以是/ myapp/user;对于SomeOtherData,我的网址将是/ myapp /别的。

我希望能够确定我给定类的Restful服务的URL。我想要一种将类关联到url的方法,而不必在别处保留关联。

那么,有没有办法让我通过使用Spring MVC调用方法(比如getPath())来以编程方式设置路径?

编辑:我已经改变了我的回答对您展示如何使用@PathVariable以模拟“的setpath()”方法。

我不相信你可以做到这一点,但你可以使用动态路径元素来模拟这种效果。

@RequestMapping(value = "/my") 
public class MyController { 
    private String supportedPath = "default"; 

    @RequestMapping(value = "/{aPathElement}") 
    public void doSomething(@PathVariable("aPathElement") String elementName) { 
     if(elementName.equals(supportedPath) { 
      //do something... 
     } else { 
      //send 404 page not found... 
     } 
    } 

    public void setPath(String newPath) { 
     supportedPath = newPath; 
    } 
} 
+0

谢谢,但那不是我想要做的。 – ltfishie 2012-02-17 20:05:27

+0

@ltfishie检查我的编辑。 – 2012-02-17 20:26:39

+0

也许你可以阐述你需要做什么。 – Scott 2012-02-17 20:26:54

1. 逆转的最佳解决方案是一个集中路由器像在轨道(https://*.com/a/12881531/2533287

2. 可能你只需要定义路径为一个常数

@RequestMapping(value = MyController.PATH) 
public class MyController { 
     public static final String PATH="/my"; 

     @RequestMapping(value = "/something") 
     public doSomething() { 
     } 
     public static String getPath() { 
      return PATH; 
     } 
} 

... 

String myControllerUrl = MyController.getPath(); 

3.

有没有办法让我设置th e路径通过调用方法,比如说getPath(),用Spring MVC

我不明白你想设置什么路径?控制器或“字符串路径”变量的路径在别的地方?