相关疑难解决方法(0)

Spring MVC返回JSONS和异常处理

我正在使用带控制器的Spring MVC,我的问题是如何返回一个JSON响应,该响应与@ResponseBody对象不同,该对象被返回并且包含在要返回的JSON中.

为了进一步说明,我有一个名为"UserDetails"的对象,它有两个名为"name","emailAddress"的字段

@ResponseBody UserDetails
Run Code Online (Sandbox Code Playgroud)

现在json返回的样子

{name:"TheUsersName",emailAddress:"abc@abc123.com"}

有什么办法可以在返回之前修改json(所有控制器中所有方法中的所有jsons),其中将添加"status"字段,而其他json数据将位于json中的"data"键下.

另外当从某个地方的java服务器抛出异常时,如何将json返回到前端,json应该具有"status:false"和异常名称(尽管至少是状态部分)

java spring json exception-handling spring-mvc

7
推荐指数
2
解决办法
2万
查看次数

返回JSON或XML的ExceptionHandler无法在spring mvc 3中运行

代码是这样的:

   @Controller
    public class TestController {

        @RequestMapping(value = "/testerror", method = RequestMethod.GET)
        public @ResponseBody ErrorTO testerror(HttpServletRequest request,HttpServletResponse response) {
           throw new ABCException("serious error!");
        }


        @ExceptionHandler(ABCException.class)
        public  @ResponseBody ErrorTO handleException(ABCException ex,
                HttpServletRequest request, HttpServletResponse response) {
            response.setStatus(response.SC_BAD_REQUEST);
            return new ErrorTO(ex.getMessage());
        }


     @RequestMapping(value = "/test", method = RequestMethod.GET)
    public @ResponseBody ErrorTO test(HttpServletRequest request, 
                                      HttpServletResponse response) {
        ErrorTO error = new ErrorTO();
        error.setCode(-12345);
        error.setMessage("this is a test error.");
        return error;
    }

}
Run Code Online (Sandbox Code Playgroud)

当我尝试卷曲-H"接受:application/json"-v"http://localhost.com:8080/testerror"我收到此错误:org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver - 找不到HttpMessageConverter,支持返回类型[类com.kibboko.poprocks.appservices.dtos.ErrorTO]和[application/json]

但如果我尝试卷曲-H"接受:application/json"-v"http://localhost.com:8080/test",工作并返回json响应."application/xml"也有效.

我需要处理的异常处理程序有什么特别之处,以便它可以与json或xml一起使用吗?谢谢!

exception-handling spring-mvc

6
推荐指数
2
解决办法
9553
查看次数

Spring 3,ReST,@ ResponseBody和@ExceptionHandler

我一直在尝试使用简单的基于Spring 3的ReST Web服务进行异常处理.基于我所看到的一切,有一个错误阻止它自动使用@ResponseBody和@ExceptionHandler注释

https://jira.springsource.org/browse/SPR-6902

因此,在Spring 3.1或3.0.6之前不支持它,当前执行异常处理的最佳方法是什么?我看过很多帖子,但没有找到一个对我有用的明确答案.理想的解决方案是自动为xml和json提供支持

  • 我是否必须手动定义整个编组设置?这不会消除使用Spring 3休息支持的注释的价值吗?
  • 似乎是为了手动定义编组(即Jaxb2Marshaller)我需要在spring-ws上添加一个新的依赖,这有点痛苦
  • 是否更容易定义一个'Response'对象,我的所有方法返回并将所有函数包装在try/catch块中?

spring jaxb2

5
推荐指数
1
解决办法
5414
查看次数

标签 统计

exception-handling ×2

spring ×2

spring-mvc ×2

java ×1

jaxb2 ×1

json ×1