Spring mvc 如果filds上的验证失败,则生成json错误消息
我有一个表单,我正在使用ajax调用提交它。我正在使用jsr 303 bean验证来验证表单字段。现在我能够验证字段,但当出现任何验证错误时,它应该会给出json错误消息,否则它将生成相应类型的报告。我的大问题是如何生成json验证失败时出现错误消息。我在控制器类中的代码如下所示Spring mvc 如果filds上的验证失败,则生成json错误消息,spring-mvc,Spring Mvc,我有一个表单,我正在使用ajax调用提交它。我正在使用jsr 303 bean验证来验证表单字段。现在我能够验证字段,但当出现任何验证错误时,它应该会给出json错误消息,否则它将生成相应类型的报告。我的大问题是如何生成json验证失败时出现错误消息。我在控制器类中的代码如下所示 @RequestMapping(value = "pdf", method = { RequestMethod.POST, RequestMethod.GET }) public ModelAndView g
@RequestMapping(value = "pdf", method = { RequestMethod.POST, RequestMethod.GET })
public ModelAndView generatePdfReport(@ModelAttribute("reports") @Valid ReportsCommand model, BindingResult result, ModelAndView modelAndView,
HttpServletRequest request, HttpServletResponse response) throws Exception {
if (result.hasErrors()) {
System.out.println("Error in call type value123");
// return new ModelAndView(new RedirectView("../pages/report/main.jsp?module=report&page=fluctuations"));
throw new BindException(result);
}
else {
.....
return modelAndView;
}
}
在我的模型课中,我正在验证下面的字段
@Size(min = 2, max = 3, message = "calltype must between 2 to 3 Characters.")
private String callType;
如果result.hasErrors为true,那么我想生成json错误消息。我该怎么做…我从未用json尝试过这样的事情。我不知道有多少。但是您需要对控制器方法进行一些修改。 像 将返回类型更改为
void
,而不是ModelAndView
。
在方法签名中,再添加一个参数作为HttpServletResponse
。
然后,您需要使用response.getWriter().write(//something here)编写错误数据代码>
在ajax响应中,您可以获得从控制器传递的字符串错误消息
希望这对你有帮助。干杯。你的案子并不简单。控制器中定义的每个方法只能返回一种类型的视图
例如,如果要返回json响应,控制器的方法需要@ResponseBy注释
public @ResponseBody Report generatePdfReport(@ModelAttribute("reports") @Valid ReportsCommand model, BindingResult result, ModelAndView modelAndView, HttpServletRequest request, HttpServletResponse response) throws Exception {
return new Report();
}
如果要将响应转发到将显示验证结果的视图,则必须像以前一样使用ModelAndView返回类型
您将无法对同一控制器方法使用两种不同的响应类型。我建议将验证和报告生成分为两个不同的步骤
祝你好运