2012-10-03 96 views
1

我有被配置爲與會話驗證爲如下/ session_auth_uri一個控制器:Spring MVC的控制器繼承重寫處理程序方法

@Controller 
@RequestMapping("/session_auth_uri") 
public class BaseController { 

    @RequestMapping(value = "/do", method = RequestMethod.POST, consumes = "application/json", produces = "application/json") 
    @ResponseBody 
    public Result do(@RequestBody Query query) throws SomeException { 
    return new Result(); 
    } 

    @RequestMapping(value = "/exec", method = RequestMethod.POST, consumes = "application/json", produces = "application/json") 
    @ResponseBody 
    public Result exec(@RequestBody Query query) throws SomeException { 
    return new Result(); 
    } 
} 

我想延長BaseController重用1種處理程序方法=>做(... )(基本身份驗證用於/ basic_auth_uri):

@Controller 
@RequestMapping("/basic_auth_uri") 
public class SubclassController extends BaseController { 
} 

的問題是,我想訪問/ basic_auth_uri/Exec時要返回HttpStatus.NOT_IMPLEMENTED爲EXEC(...)處理方法。

感謝您的任何建議。

回答

1

想不出任何其他方式比SubclassController覆蓋它:

@Controller 
@RequestMapping("/basic_auth_uri") 
public class SubclassController extends BaseController { 
    @RequestMapping(value = "/exec", method = RequestMethod.POST, consumes = "application/json", produces = "application/json") 
    @ResponseStatus(HttpStatus.NOT_IMPLEMENTED) 
    public Result exec(@RequestBody Query query) throws SomeException { 
    return null; 
    } 

} 
+0

事實上,這部作品在情況下,我提供的要求有效的JSON序列查詢。如果我沒有提供任何請求,我會得到500 - 由於MappingJacksonHttpMessageConverter的內部服務器錯誤;如果我在請求中提供一個無效的輸入,我得到一個JSONParseException;假設我們有一個RuntimeException的@ExceptionHandler方法,並且返回200 OK並在響應中返回異常消息。我想到的是:不管請求輸入是什麼=>總是返回501 - NOT IMPLEMENTED響應狀態。有沒有辦法做到這一點? –

+0

僅當我刪除@RequestBody註釋時,纔會得到501 - 未實現的HTTP狀態碼。 –