簡體   English   中英

Spring @Controller分離GET和POST映射

[英]Spring @Controller Separating GET and POST mappings

我正在使用Spring MVC和注釋配置。 我有一個用於處理HTTP GET調用的控制器類:

@Controller
@RequestMapping("/form")
public class FormController {

    @RequestMapping(value = "/{table}/{identifier}/edit", method = RequestMethod.GET)
    public ModelAndView getEditView(ModelMap map, @PathVariable String table, @PathVariable Object identifier) {
        //generate the view for this record
    }

並且用於處理表單的Controller在該URL上提交

@Controller
@RequestMapping("/form")
public class FormSaveController {

    @RequestMapping(value = "/{table}/{identifier}/edit", method = RequestMethod.POST)
    public ModelAndView saveView(WebRequest request, @PathVariable String table, @PathVariable Object identifier) {
        //save the updated values and redirect to view
    }

當我試圖啟動我的容器時,spring抱怨道

Caused by: java.lang.IllegalStateException: Cannot map handler 'FormSaveController' to URL path [/form/{table}/{identifier}/edit]: There is already handler of type [class com.company.web.FormController] mapped.

這似乎表明我正在嘗試做的事情在Spring中不受支持。 我試圖將控制器用於生成表單的原因與保存表單的控制器分開,因為我使用Springs @ExceptionHandler來處理發生的任何運行時異常,並且我想處理異常以顯示視圖而不是異常用於保存記錄。

有沒有不同的方法來處理我想要做的事情(對特定種類的請求使用Springs @ExceptionHandler注釋?)

你嘗試過使用同一個班級嗎? 我認為那會有用。 如果您希望使用ExceptionHandler,請嘗試使用HandlerExceptionResolver

我試圖將控制器用於生成表單的原因與保存表單的控制器分開,因為我使用Springs @ExceptionHandler來處理發生的任何運行時異常,並且我想處理異常以顯示視圖而不是異常用於保存記錄

我想你的視圖模板引擎會拋出不同類型層次結構的異常,而不是在數據存儲區中保存記錄時遇到的異常。 將這些方法放在同一個類中可能最容易,然后通過一種方式映射視圖引擎類型的異常和另一種DB異常來解決@ExceptionResolver問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM