我有一个返回JSON的控制器。它采用一种形式,该形式通过spring注释进行验证。我可以从BindingResult获取FieldError列表,但是它们不包含JSP将在标记中显示的文本。如何获取错误文本以JSON形式发送回去?
@RequestMapping(method = RequestMethod.POST)
public
@ResponseBody
JSONResponse submit(@Valid AnswerForm answerForm, BindingResult result, Model model, HttpServletRequest request, HttpServletResponse response) {
if (result.hasErrors()) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
JSONResponse r = new JSONResponse();
r.setStatus(JSONResponseStatus.ERROR);
//HOW DO I GET ERROR MESSAGES OUT OF BindingResult???
} else {
JSONResponse r = new JSONResponse();
r.setStatus(JSONResponseStatus.OK);
return r;
}
}
JSONREsponse类只是一个POJO
public class JSONResponse implements Serializable {
private JSONResponseStatus status;
private String error;
private Map<String,String> errors;
private Map<String,Object> data;
...getters and setters...
}
调用BindingResult.getAllErrors()返回FieldError对象的数组,但没有实际错误。
免责声明:我仍然不使用Spring-MVC 3.0
但是我认为Spring 2.5使用的相同方法可以满足您的需求
for (Object object : bindingResult.getAllErrors()) {
if(object instanceof FieldError) {
FieldError fieldError = (FieldError) object;
System.out.println(fieldError.getCode());
}
if(object instanceof ObjectError) {
ObjectError objectError = (ObjectError) object;
System.out.println(objectError.getCode());
}
}
希望对您有用
更新
如果要获取资源包提供的消息,则需要一个注册的messageSource实例(它 必须 称为messageSource)
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames" value="ValidationMessages"/>
</bean>
将您的MessageSource实例注入视图中
@Autowired
private MessageSource messageSource;
要获取您的消息,请执行以下操作
for (Object html" target="_blank">object : bindingResult.getAllErrors()) {
if(object instanceof FieldError) {
FieldError fieldError = (FieldError) object;
/**
* Use null as second parameter if you do not use i18n (internationalization)
*/
String message = messageSource.getMessage(fieldError, null);
}
}
您的验证器应该看起来像
/**
* Use null as fourth parameter if you do not want a default message
*/
errors.rejectValue("<FIELD_NAME_GOES_HERE>", "answerform.questionId.invalid", new Object [] {"123"}, null);
我有我的spring错误控制器,我需要获得实际的异常类,这样我就可以打印堆栈跟踪和其他类似的东西。这是我的错误控制器 我知道这不多,但我需要Exception对象能够做一些额外的处理。 感谢任何事先的帮助!
我想要的是这样的JSON格式: 现在我把我的代码: 我的基本数据结构定义在实体包中,使用方法可以返回字符串类型的blog标题: 模型视图中,在这个类中,我使用,它的工作原理是: 服务类代码,我使用JPA方法从MySQL:: 那么,我如何通过获得JSON格式字符串列表
我想在Xcode或终端中看到它,但如果我需要使用另一个软件,这不是问题。
使用JavaFX和Scene Builder,我试图从控制器访问标签内的文本。 我在控制器中初始化了一个标签,如下所示: fxml文件中包含以下代码: 我已使用场景生成器将标签绑定到控制器中的此函数: 我的想法是调用类似label1的东西。getText()。但为此,我需要获得标签的fx:id,而且由于我需要许多标签,所以我无法单独硬编码所有id案例。 在JavaFX控制器中获取单击对象id的更好
问题内容: 给定某种带有请求映射的控制器 您将如何在方面类中检索方法值(RequestMethod.POST)? 我想跟踪执行POST请求的所有控制器方法。 谢谢 问题答案: 找到了解决方案。 请注意要导入的类。
问题内容: 有没有办法从AngularJS中的当前$ scope中获取控制器名称? 问题答案: 不,不可能。如果属于指令怎么办?没有属性可以检索有关该范围所属的控制器的信息。