首页 > 代码库 > spring mvc 接受多对象的处置

spring mvc 接受多对象的处置

spring mvc 接受多对象的处理

spring mvc感觉很好用,尤其是对接收对象参数的自动绑定非常简便,但对于同时传多个对象时有些困扰。同时项目并没有直接使用spring的formtag。从网上学来的多对象传值,自己优化了下,原文找不到出处了这里记录下。

首先声明一个注解类,用于对传值对象的声明

/**
 * 处理spring mvc 对象绑定注解
 *
 */
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestBean {
	String value() default "_def_param_name";
}
 然后是一个对WebArgumentResolver的实现类,对象参数绑定主要是这个类来处理

/**
 * 对象传值的参数绑定处理
 *
 */
public class BeanArgumentResolver implements WebArgumentResolver {
	@SuppressWarnings("rawtypes")
	public Object resolveArgument(MethodParameter param, NativeWebRequest request){
		RequestBean requestBean = param.getParameterAnnotation(RequestBean.class);
		try{
			if (requestBean != null) {
				String _param = requestBean.value();
				if (_param.equals("_def_param_name")) {
					_param = param.getParameterName();
				}
				Class clazz = param.getParameterType();
				Object object = clazz.newInstance();
				HashMap<String, String[]> paramsMap = new HashMap<String, String[]>();
				Iterator<String> itor = request.getParameterNames();
				while (itor.hasNext()) {
					String webParam = (String) itor.next();
					String[] webValue = http://www.mamicode.com/request.getParameterValues(webParam);> 

两个类写好后对mvc配置文件进行配置

<mvc:annotation-driven>
		<mvc:argument-resolvers>
			<bean class="xx.xx.xx.xx.BeanArgumentResolver" />
		</mvc:argument-resolvers>
		<mvc:message-converters register-defaults="true">
			<!-- 将StringHttpMessageConverter的默认编码设为UTF-8 -->
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
		    	<constructor-arg value=http://www.mamicode.com/"UTF-8" />>
 接下来就是使用了mvc的controller方法如下

@RequestMapping(value=http://www.mamicode.com/"/saveEvent")>
页面form表单代码

<td align="right">客户代码:</td>
            <td><input type="hidden" name="event.submitUser.userId" value=http://www.mamicode.com/"${event.submitUser.userId }" />>