0 0

SpringMVC绑定多个对象的集合30

有一个javabean
F{
  String a;
  String b;
  int c;
}

我希望提交给后台服务器的参数是一个列表。现在是通过
f[0].a="111",f[0].b="222",f[0].c=333
f[1].a="111",f[1].b="222",f[1].c=333
f[2].a="111",f[2].b="222",f[2].c=333
提交参数给后台。

问题是我使用的springmvc注解方式,那么怎样才能将这些参数在直接转化为一个List<F>的列表呢

问题补充:
Ihavegotyou 写道
F{ 
String[] a; 
String[] b; 
int[] c; 

这样是否更好?

当然不一样,List<F>是一个关于F的列表,而下面的就不一样了

问题补充:
Ihavegotyou 写道
这样重构F后,使得a,b, c可以是表单元素。
提交到后台就变为: a[0]="111"&a[1]="222"&a[2]="333";
b,c与上类似。
原来的List<F>就相当于现在的F.

你说得有道理,这样来说,分别获取三个元素是很简单的事情,不失为一个解决办法。
只是感觉使得元素的意义有点变了。
我试过另一个办法,很奇怪的说,
新建一个bean来存储原有的List<F>

E{
  List<F> flist;
  getter/setter;
}


那么在controller中就可以直接使用了。

Controller{

  public execute(E e){
    List<F> list = e.getFlist();   ---
  }

}


而直接使用就会出现无法绑定的事,,非要加一个,,很无奈!

问题补充:
Ihavegotyou 写道
your-servlet.xml配置好.
<bean name="fController"
		class="com.yourFController">
		<property name="userService" ref="userService"></property>
</bean>




class FController {
	protected ModelAndView handle(HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {
		       List<F> list  = ( List<F>) command;  //在这里实例化了,不用一个一个输入.
			return new ModelAndView("main");
		}
	}
}


您可能没有理解我的意思,因为我的难题是List<F> list  = ( List<F>) command;是转化不了的,因为如a[1],a[2],a[3]这样的参数是可以直接转化的,但是针对复杂类型的a[1].a,a[1].b,a[2].a,a[2].b这样子的想转化为List<F>是会出现ClassCast错误的,因为这个是不被识别的。

其原因是什么呢,我想可能是因为Spring是将字符串转化为对应的modal的,那么简单类型的其被识别为集合,或通过对应的class转化过去。。所以对于List<F>来说,其优先去找的是一个F[0],f[1]的字符串,所以其没有找到,,更无论将每个内容转化为对应的复杂类型了。

问题补充:我查找了大量的示例,得出一个结论:SpringMVC通过参数绑定数据时支持的是基本类型、包含基本类型的集合类型和普通JavaBean;不包括包含JavaBean的集合类型。

问题补充:所以,这个地方不太人道
总是希望能够在一个参数中就可以直接反射出所需要的内容,而不是通过重新设置一个formbean
2010年3月18日 15:08

6个答案 按时间排序 按投票排序

0 0

采纳的答案

是,只能处理简单的String, int,或String[], int[].复杂的类型直接转不了。

2010年3月18日 17:10
0 0

是,表单元素提交,要么elementA=X,要么elementA[0]=111&elementA[1]=222&....

2010年3月18日 17:32
0 0

还有:
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
           <props>
              <prop key="/fController.html">fController</prop>
              <prop key="/your.html">editPage</prop>
           </props>
        </property>
    </bean>

2010年3月18日 16:14
0 0

your-servlet.xml配置好.

<bean name="fController"
		class="com.yourFController">
		<property name="userService" ref="userService"></property>
</bean>




class FController {
	protected ModelAndView handle(HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {
		       List<F> list  = ( List<F>) command;  //在这里实例化了,不用一个一个输入.
			return new ModelAndView("main");
		}
	}
}

2010年3月18日 16:09
0 0

这样重构F后,使得a,b, c可以是表单元素。
提交到后台就变为: a[0]="111"&a[1]="222"&a[2]="333";
b,c与上类似。
原来的List<F>就相当于现在的F.

2010年3月18日 15:29
0 0

F{ 
String[] a; 
String[] b; 
int[] c; 

这样是否更好?

2010年3月18日 15:15

相关推荐

    springmvc绑定Set的解决方案

    当使用HTML表单提交数据时,Spring MVC会自动将同名的多个input元素值合并成一个Set。每个input元素的name属性应该相同,值则作为Set的元素。 6. **自定义类型处理器** 对于更复杂的场景,可以注册自定义的`...

    springMVC前后交互代码,多对象传递

    - 集合参数:若需传递多个同类型参数,如用户ID列表,可以使用`@RequestParam`结合List或数组类型,如`@RequestParam List&lt;Long&gt; userIds`。 2. **模型数据绑定**: - `@ModelAttribute`注解用于将请求参数绑定到...

    SpringMVC 数据绑定实例详解

    例如,如果有多个同名的请求参数,它们会被转换为一个 List 对象。 此外,SpringMVC 还支持数据验证。我们可以使用 JSR-303 或 Hibernate Validator 规范来添加验证注解,如 `@NotNull`、`@Size` 等,来确保用户...

    SpringMVC入门很简单之数据绑定(上)

    例如,一个表单提交多选框,每个选项对应一个值,可以绑定到一个String类型的List: ```html ... ``` 在控制器中,可以这样接收: ```java public String handleForm(@RequestParam("colors") List...

    springmvc高级参数绑定

    在这个场景中,我们需要实现一个功能,让用户能够在商品列表页面上选择多个商品,然后通过点击删除按钮将选中的商品ID批量传递给后端Controller,以便删除相应的商品信息。下面我们将详细讨论如何实现这个功能。 ...

    完整版 Java开发实训课程系列-SpringMVC框架技术教程 第4章 参数绑定 (共20页).pptx

    完整的课程涵盖了SpringMVC的多个方面,包括概述、处理器映射器和适配器、请求映射和返回值、参数绑定、数据校验、异常处理、文件上传、JSON数据交互、拦截器以及SSM(Spring、SpringMVC、MyBatis)框架的整合。...

    SpringMVC详解

    以上只是SpringMVC框架的部分内容,实际使用中还包括视图模板、文件上传/下载、国际化、数据验证等多个方面。SpringMVC的灵活性和全面性使其成为Java Web开发的首选框架之一。通过深入学习和实践,开发者能够构建出...

    SpringMVC学习课堂笔记

    - **集合类型绑定**:将多个请求参数绑定到集合类型。 ##### 4.3 自定义参数绑定 对于复杂的参数绑定需求,可以通过自定义参数绑定器来实现。 #### 五、SpringMVC与Struts2的区别 - **配置方式**:SpringMVC倾向...

    springmvc第一天课堂笔记.docx

    - **参数绑定**:支持绑定复杂的对象,如POJO对象、数组、集合等。 - **数据回显**:自动将模型数据回显到表单中。 - **文件上传**:支持多文件上传功能。 - **JSON数据交互**:支持通过JSON格式进行数据交互。 - **...

    springmvc_mybatis1110

    本学习资源集合了传智播客的课程内容,旨在帮助开发者深入理解并掌握SpringMVC和MyBatis的集成使用,构建完整的项目体系。 一、SpringMVC框架解析 SpringMVC是Spring框架的一个模块,主要处理HTTP请求和响应,提供...

    SpringMVC3+jsp

    - SpringMVC支持资源文件来实现多语言支持,通过`LocaleResolver`和`LocaleContextResolver`配置。 - `Accept-Language`头信息用于自动选择合适的语言。 8. **RESTful服务**: - 使用HTTP动词(GET、POST、PUT、...

    跟开涛学SpringMVC源代码

    《跟开涛学SpringMVC源代码》是一个深入学习SpringMVC框架的资源集合,它涵盖了从基础到高级的多个章节,旨在帮助开发者全面理解SpringMVC的工作原理和实现细节。SpringMVC作为Spring框架的重要组成部分,是企业级...

    springmvc第一天课堂笔记

    【SpringMVC基础概念】 ...通过这些基础知识的学习,你可以理解SpringMVC的核心概念,为后续的高级应用,如集合类型参数绑定、数据回显、文件上传、JSON交互、RESTful支持和拦截器的使用奠定坚实的基础。

    springMVC框架

    在表单中,可以通过数组或列表的格式来提交多个值,如`name[]`。SpringMVC会自动将这些值填充到对应的集合属性中。 5. **视图解析**:SpringMVC中的视图解析器如`InternalResourceViewResolver`负责将处理方法返回...

    springmvc课堂笔记

    SpringMVC的工作流程涉及多个核心组件,下面逐一介绍这些组件的作用及其相互间的工作流程。 ##### 2.1 前端控制器DispatcherServlet - **职责**:接收客户端请求,将其分发至合适的处理程序,并负责响应处理结果。 ...

    跟开涛学SpringMVC-高清版

    8. **数据绑定**:掌握表单数据的自动绑定,包括单个字段绑定和集合绑定,以及如何使用`@ModelAttribute`进行模型数据绑定。 9. **异常处理**:学习如何使用`@ExceptionHandler`处理异常,以及全局异常处理类的配置...

    Springmvc请求处理方法参数

    在处理文件上传或复选框提交的场景下,可能需要接收同一个名称但值不同的多个参数。这时可以使用`@RequestParam`的`multiValue`属性,或者直接使用`List`或`Set`作为参数类型。 ```java @RequestMapping("/example...

    springMVC完整教程及学习文件

    SpringMVC提供了统一的异常处理机制,可以配置一个或多个@ControllerAdvice注解的类,里面包含@ExceptionHandler方法来捕获和处理特定类型的异常,从而避免在每个Controller中都写异常处理代码。 八、RESTful风格 ...

    springmvc+extjs4mvc实现权限管理

    总之,"springmvc+extjs4mvc实现权限管理"项目展示了如何结合服务器端的SpringMVC和客户端的ExtJS4MVC来构建一个完整的权限管理系统,它涉及到了认证、授权、UI设计等多个关键环节,对于学习和实践企业级应用的权限...

    SpringMVC + Mybatis 增删改查(批量删除)

    **批量删除** 是对多个记录执行删除操作,Mybatis提供了批处理功能。在Mapper接口中定义一个带有List参数的方法,例如`void deleteBatch(List&lt;Integer&gt; ids)`,在XML配置中写一个delete语句,使用foreach标签遍历ids...

Global site tag (gtag.js) - Google Analytics