Java 如何在validation-text.properties文件中使用通配符?
我很难弄清楚如何让spring在表单绑定期间使用我的自定义错误消息来处理列表中对象字段上的错误 上述问题的更清晰版本是: 我有这样的课:Java 如何在validation-text.properties文件中使用通配符?,java,spring,validation,spring-mvc,Java,Spring,Validation,Spring Mvc,我很难弄清楚如何让spring在表单绑定期间使用我的自定义错误消息来处理列表中对象字段上的错误 上述问题的更清晰版本是: 我有这样的课: public class Foo { private Long fooId; private Long number; //getters and setters stuff } 然后是一个类栏,有一个Foos的列表: public class Bar { private List<Foo> foos;
public class Foo
{
private Long fooId;
private Long number;
//getters and setters stuff
}
然后是一个类栏,有一个Foo
s的列表:
public class Bar
{
private List<Foo> foos;
//other stuff
}
但是,因为我有一个Foo
s的列表,所以该字段实际上是foos[0]。number
或foos[1]。number
,等等
所以很明显,typeMismatch.bar.foo
不会解决任何问题
我的问题是,如何在validation-text.properties字段中指定类似的内容:
typeMismatch.bar.foos[*].number=Invalid data. ???
通过检查BindingResult
对象,可以检查可以在validation-text.properties中使用的键。将BindingResult
作为参数添加到控制器方法中(如果您还没有),然后在发生验证错误时查看result.getFieldError().getCodes()(如果存在任何字段错误,则应包含第一个字段错误的代码)
编辑
我已经试用了您的示例并检查了BindingResult
中的代码。以下任何代码都应起作用
- typeMismatch.bar.foos[1]。编号
- 类型不匹配.bar.foos.number
- 类型不匹配。foos[1]。编号
- typeMismatch.foos.number
- 类型不匹配。编号
- typeMismatch.java.lang.Long
- 类型不匹配
所以,要想得到你想要的东西,你只需要在你已经尝试过的东西上加上“s”(这是foos而不是foo):
typeMismatch.bar.foos.number=无效数据。
typeMismatch.bar.foos[*].number=Invalid data. ???