cho*_*hki 2 java spring spring-mvc
我有以下pojo:
public class Foo {
@Size(min=0,max=10)
private String bar = null;
@Size(min=0,max=10)
private String baz = null;
.... getters and setters
}
Run Code Online (Sandbox Code Playgroud)
和以下控制器:
@Controller
@RequestMapping(value = "/path", method = RequestMethod.POST)
public class Control {
public String handler(@Valid Foo foo1, BindingResult res_foo1, @Valid Foo foo2, BindingResult res_foo2){
//Business logic
}
}
Run Code Online (Sandbox Code Playgroud)
以及以下表单摘要:
<form action="/path">
<input name="foo1.bar" type="text" />
<input name="foo1.baz" type="text" />
<input name="foo2.bar" type="text" />
<input name="foo2.baz" type="text" />
</form>
Run Code Online (Sandbox Code Playgroud)
提交表单时出现以下错误:
java.lang.IllegalArgumentException: argument type mismatch
Run Code Online (Sandbox Code Playgroud)
如果对象不同并且pojos具有不同的属性,则它可以正常工作.有没有办法让这项工作?
我刚想通了.诀窍是将pojos嵌入另一个pojo中.
public class Nest {
@Valid
private Foo one = null;
@Valid
private Foo two = null;
.... getters and setters
}
Run Code Online (Sandbox Code Playgroud)
使用这样的控制器:
@Controller
@RequestMapping(value = "/path", method = RequestMethod.POST)
public class Control {
public String handler(@Valid Nest nest, BindingResult res_nest){
//Business logic
}
}
Run Code Online (Sandbox Code Playgroud)
和这样的形式:
<form action="/path">
<input name="one.bar" type="text" />
<input name="one.baz" type="text" />
<input name="two.bar" type="text" />
<input name="two.baz" type="text" />
</form>
Run Code Online (Sandbox Code Playgroud)
这确实使得分别验证这两个对象是不可能的.
| 归档时间: |
|
| 查看次数: |
2481 次 |
| 最近记录: |