Bob*_*obo 3 java spring spring-mvc
例如,如果请求成功,我将返回一个View,如果没有,则返回一个指示错误消息的String,并将content-type设置为xml或json.并且JavaScript XHR回调方法将完成重定向到另一个页面(View)或保持在同一页面并显示错误信息的工作.
根据我读到的内容,似乎我应该使用"void"作为处理程序方法的返回类型.检查一下:"如果方法处理响应本身(通过直接写响应内容,为此目的声明类型为ServletResponse/HttpServletResponse的参数)或者假定视图名称应通过RequestToViewNameTranslator隐式确定(无法声明),则为void处理程序方法签名中的响应参数."(Spring Framework参考).
我不明白的是"视图名称应该通过RequestToViewNameTranslator隐式确定(不在处理程序方法签名中声明响应参数)"是什么意思?有人给我举个例子吗?
更简洁的解决方案是让您的普通控制器方法在出错时抛出异常,然后有一个@ExceptionHandler方法来捕获它并返回错误响应.
@RequestMapping("/")
public View requestHandler() throws SomeException
{
// ...
}
@ExceptionHandler(SomeException.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public @ResponseBody String handleSomeException(SomeExcption ex)
{
return ex.getMessage(); // for example
}
Run Code Online (Sandbox Code Playgroud)
一个MappingJacksonHttpMessageConverter与使用@ResponseBody将删除需要访问HttpServletResponse直接输出JSON.或者,使用a MappingJacksonJsonView和a Model.使用XML转换器/视图可以完成相同的操作.
一个RequestToViewNameTranslator意志(作为一个可能猜测),如果没有指定其他视图名翻译成请求视图名称.请参阅DefaultRequestToViewNameTranslator示例.
| 归档时间: |
|
| 查看次数: |
3030 次 |
| 最近记录: |