以下是一个代码段,我们可以在方法参数级别使用@ModelAttribute
@ReqestMapping(value = useruri)
public void submitInfo(@ModelAttribute User user) {
// Business logic
}
@ReqestMapping(value = personuri)
public void submitInfo(@ModelAttribute Person person) {
// Business logic
}
我们可以喜欢吗?
@RequestMapping(value = genericuri)
public void submitInfo(HttpServletRequest request, @PathVariable String type) {
if (type.equals("user")) {
User user = someSpringMvcMethod(request, User.class)
} else if (type.equals("person")) {
Person person = someSpringMvcMethod(request, Person.class)
}
//Business logic
}
原因是,我期望基于类型的提交数据类型不同,并且我想编写一个通用控制器,因为唯一的区别是将请求数据转换为特定的Java类。 User和Person类具有很多不同的数据,我认为我不能在这里使用继承/多态来解决用例
答案 0 :(得分:1)
我不推荐这样的东西。
看这里
if (type.equals("user")) {
User user = someSpringMvcMethod(request, User.class)
} else if (type.equals("person")) {
Person person = someSpringMvcMethod(request, Person.class)
}
这已经错了,恕我直言。一种管理多个模型的单一方法。
如果您需要其他型号的型号怎么办?另一个if
分支。
例如,这样好很多
@ReqestMapping("base-path/user")
public void submitInfo(@ModelAttribute final User user) {
commonLogic(user.valueOne, user.valueTwo);
}
@ReqestMapping("base-path/person")
public void submitInfo(@ModelAttribute final Person person) {
commonLogic(person.valueOne, person.valueTwo);
}
private void commonLogic(final String one, final String two) {
... // Business logic
}
commonLogic
管理模型类型之间的通用业务逻辑。
它集中了工作。
您甚至可以将commonLogic
放在 Service 中,无论如何,它都应该放在其中。