Java 如何将两个对象传递给同一个Spring控制器表单提交?
我有以下几点建议:Java 如何将两个对象传递给同一个Spring控制器表单提交?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有以下几点建议: public class Foo { @Size(min=0,max=10) private String bar = null; @Size(min=0,max=10) private String baz = null; .... getters and setters } 以及以下控制器: @Controller @RequestMapping(value = "/path", method = RequestM
public class Foo {
@Size(min=0,max=10)
private String bar = null;
@Size(min=0,max=10)
private String baz = null;
.... getters and setters
}
以及以下控制器:
@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
}
}
以及以下表单片段:
<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>
如果对象不同,POJO具有不同的属性,则效果良好。有什么办法可以让这一切顺利吗?我刚想出来。诀窍是将pojo嵌套到另一个pojo中
public class Nest {
@Valid
private Foo one = null;
@Valid
private Foo two = null;
.... getters and setters
}
使用如下控制器:
@Controller
@RequestMapping(value = "/path", method = RequestMethod.POST)
public class Control {
public String handler(@Valid Nest nest, BindingResult res_nest){
//Business logic
}
}
<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>
还有这样一种形式:
@Controller
@RequestMapping(value = "/path", method = RequestMethod.POST)
public class Control {
public String handler(@Valid Nest nest, BindingResult res_nest){
//Business logic
}
}
<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>
这使得不可能单独验证这两个对象