Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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 使用Spring框架从web表单接收对象数组_Java_Spring - Fatal编程技术网

Java 使用Spring框架从web表单接收对象数组

Java 使用Spring框架从web表单接收对象数组,java,spring,Java,Spring,我有一个表单JSP网页,这个表单包含同一Java对象的多个实例, 我使用JavaSpring框架来控制与控制器和视图的“通信” 我的问题是,我希望能够从视图接收一个简单的数组,其中包含我的对象的实例,这些实例当前在页面上(可能在页面上被修改) 当我需要一种特定类型的项时,我通常只在控制器的方法声明中命名它,但是对于数组(或任何集合),这将不起作用 比如: @RequestMapping public String edit(...SomeObject[] objectName, ...){ }

我有一个表单JSP网页,这个表单包含同一Java对象的多个实例, 我使用JavaSpring框架来控制与控制器和视图的“通信”

我的问题是,我希望能够从视图接收一个简单的数组,其中包含我的对象的实例,这些实例当前在页面上(可能在页面上被修改)

当我需要一种特定类型的项时,我通常只在控制器的方法声明中命名它,但是对于数组(或任何集合),这将不起作用

比如:

@RequestMapping
public String edit(...SomeObject[] objectName, ...){
}
只会返回一个错误,但我可以接收一个字符串数组,因此这是可行的:

@RequestMapping
public String edit(...String[] objectString, ...){
}
目标是能够使Spring自动映射对象。
谢谢你的回答

这当然是可能的;虽然我没有使用@RequestMapping来完成它,但我知道您可以检索一个集合,它可以使用“command”对象(或@modeldattribute)来完成

将集合属性定义为命令的POJO

public class FooCommand {
    private List<String> myCollection;
    // Getter & Setter
}

有什么意义吗?

Spring不知道如何从字符串创建自定义对象,因此您需要为自定义对象创建自己的PropertyEditor


第13章介绍了如何在控制器中注册自定义属性编辑器。

这是可行的,但是,我需要的是能够接收字符串以外的内容,我希望Spring自动将接收到的字符串映射到POJO什么类型的对象?If可以处理字符串、long、int、char(我想)等内容,但如果它是一个更复杂的对象,则需要使用Mark提到的属性编辑器。我的对象包含字符串和整数,它可以映射1个项,当我尝试映射数组或项列表时会出现问题如果我尝试请求列表,我收到一个GenericSignatureFormatError异常,如果我试图请求一个数组,我会得到:无法实例化bean类[srbadmininvsmask;]:未找到默认构造函数;嵌套异常为java.lang.NoSuchMethodException:[SRBADMINNVMASK;()您可以发布更多的代码吗?GenericSignatureFormatError是一个非常奇怪的错误,默认构造函数问题也是如此……如果您要将字符串之类的东西转换为日期,是的,当然需要属性编辑器。但是,如果您提交一个foo=a、foo=b和foo=c的表单,Spring MVC非常聪明,可以将其转换为一个名为“福"…我对initBinder和什么是属性编辑器感到困惑,但我发现了一个例子,我需要接收的是类似foo.atr1=a foo.atr2=b List fooah的东西,我可以理解为什么spring会有一段艰难的时光;从spring的角度来看,foo.atr1和foo.atr2是两个不同的参数。如果你需要类似的东西,你可以gh,您可以将它们命名为foo['atr1']=a,从而将它们转储到地图中
@RequestMapping(value = "/foo", method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("fooCommand") FooCommand fooCmd) {
    // do stuff with fooCmd.getMyCollection() 
}