2012-04-21 60 views
0

对于测试的原因,我想有一个弹簧MVC控制器与一个返回值应该由弹簧忽视的方法签名:控制器的返回值应被忽略

@RequestMapping(value = "/{uuid}", params = "question", method = RequestMethod.POST) 
@ResponseBody 
public IAnswer saveAnswer(UiAnswer json, @PathVariable String uuid, @RequestParam("question") String question, HttpServletResponse response) {} 

这是一个职位 - 请求控制器收到数据,如果一切正常,只需要response.setStatus(HttpServletResponse.SC_OK);

  • 随着@ResponseBody它死在一个内部服务器错误500
  • 没有@ResponseBody春天尝试解析视图
  • 随着void的返回值,它工作正常

我可以告诉春天忽略我返回的对象? 谢谢!

回答

0
@RequestMapping(value = "/{uuid}", params = "question", method = RequestMethod.POST) 
@ResponseBody 
public void saveAnswer(UiAnswer json, 
         @PathVariable String uuid, 
         @RequestParam("question") String question, 
         HttpServletResponse response) { 
    doSaveAnswer(json, uuid, question, response); 
} 

protected IAnswer doSaveAnswer(UiAnswer json, 
           String uuid, 
           String question, 
           HttpServletResponse response) { 
    // your original code here 
} 

然后单元测试doSaveAnswer()

+0

这是一个解决方案,谢谢! – myborobudur 2012-04-21 15:39:09

+0

嗯看起来像一个典型的服务实现...也许OP应该使用服务层,不仅更容易测试,但你得到N层架构的所有其他好处... – nickdos 2012-04-21 23:10:37

+0

你是对的,我应该将一些逻辑移到服务层 – myborobudur 2012-04-23 12:31:27