Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在SpringMVC中如何将子类传递给控制器?_Java_Spring_Spring Mvc - Fatal编程技术网

Java 在SpringMVC中如何将子类传递给控制器?

Java 在SpringMVC中如何将子类传递给控制器?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我的应用程序模型中有一个父类及其子类。 并具有以下控制器方法: @RequestMapping(method=RequestMethod.POST, value="/page") public String postMethod(Model model, Parent obj, BindingResult result) { // do something } 但我希望它能够处理通过表单发布的子类的实例。 如何执行此操作?您可以创建所需类型的对象作为隐式模型属性: @ModelAtt

我的应用程序模型中有一个父类及其子类。
并具有以下控制器方法:

@RequestMapping(method=RequestMethod.POST, value="/page")
public String postMethod(Model model, Parent obj, BindingResult result) {
     // do something
}
但我希望它能够处理通过表单发布的子类的实例。

如何执行此操作?

您可以创建所需类型的对象作为隐式模型属性:

@ModelAttribute("parent")
public Parent createChild(@RequestParam("type") String type) {
    if ("foo".equals(type)) return new Foo();
    else if ("bar".equals(type)) return new Bar();
    else return null;
}
因为Spring不记得自动传递给表单的对象的类型,所以您需要自己来做,方法是添加一个隐藏的表单字段,其值指定对象的类型(上例中的
type
字段)


另一种选择是通过将对象存储在会话中来避免从头创建对象。可以使用
@SessionAttributes
注释对其进行配置,请参见。

当我试图编写“@RequestParam(“type”)String type”时,服务器给了我404个错误(客户端发送的请求语法不正确()),但我需要一些方法来区分发送的对象。该类型参数应该在我的表单中硬编码,还是可以由spring自动传递?是的,这是我问题的解决方案!thnx!