Установить весеннее сопоставление запроса MVC программно - PullRequest
1 голос
/ 17 февраля 2012

В контроллере с пружинным MVC:

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

Для службы Restful каждый ресурс обычно связан с классом в домене. Например, для объекта User мой URL для обновления через POST может быть / myapp / user; для SomeOtherData мой URL будет /myapp/someother.

Я хочу иметь возможность определить URL-адрес для моей службы Restful для данного класса. Я хочу, чтобы способ связать класс с URL без необходимости сохранять связь в другом месте.

Итак, есть ли способ для меня установить путь программно, вызвав метод, скажем, getPath (), с Spring MVC?

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

РЕДАКТИРОВАТЬ : я изменил свой ответ, чтобы показать, как можно использовать @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 голосов
/ 25 июля 2013

1.Наилучшим решением для реверсирования является централизованный маршрутизатор, такой как в рельсах (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.

есть ли способ для меня установить путь программно, вызвав метод, скажем, getPath (), с Spring MVC

Я не понимаю, какой путь вы хотитеset? Путь к контроллеру или переменная "String path" где-то еще?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...