2012-10-03 67 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状态码。 –