以编程方式设置spring mvc request mapping

时间:2012-02-17 19:22:51

标签: spring spring-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 / someother。

我希望能够在给定Class的情况下确定Restful服务的url。我想要一种方法将类关联到url而不必将关联保留在其他地方。

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

2 个答案:

答案 0 :(得分:1)

编辑 :我已更改答案,以说明如何使用@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;
    }
}

答案 1 :(得分:0)

1。 倒车的最佳解决方案是集中式路由器,例如rails(https://stackoverflow.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

  

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

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