2016-08-04 114 views
2

我有一個RestController的註釋是這樣一個CRUD:春@RequestMapping絕對路徑

@RestController 
@RequestMapping("/rest/v1/area") 
public class AreaController 

我的方法是像註釋:

@RequestMapping(value = "/{uuid}", method = RequestMethod.PUT) 
public ResponseEntity<Area> save(@Valid @RequestBody Area area) { 

有沒有辦法使用的值的方法方法有絕對路徑?我想添加一個方法來上傳文件,並且不想爲此創建一個新的Controller。我想要一個方法,如:

@RequestMapping(value = "/rest/v1/area-upload", method = RequestMethod.PUT 
public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) { 

謝謝!

+0

我不認爲有一些繞過機制,快速簡便的方法是用現有方法的方法註釋替換類型註釋,然後添加新的方法(注意,您可以保留常見的URL部分的類型水平如果你想) – 2016-08-04 14:35:56

回答

5

從文檔:(spring 2.5 api document of requestmapping

方法級別的映射只被允許縮小映射表示在類級別(如果有)

所以你不能結束只能將其縮小到子路徑。

Ofcourse如果您創建一個新的控制器類並將該方法放在那裏,您可以讓它指向您喜歡的任何路徑。

+0

謝謝@Joeblade指引我在正確的方向。我檢查了我的版本:http://docs.spring.io/spring-framework/docs/4.3.2.RELEASE/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html 而且這仍然適用。 謝謝大家的解決方法,我正在檢查如果這是可能的而不更改所有其他映射。 – German

2

您可以更改控制器的路由映射。

@RestController 
@RequestMapping("/rest/v1") 
public class AreaController 

和用於方法的映射將是:

@RequestMapping(value = "/area-upload", method = RequestMethod.PUT 
public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) {