1.mvc:annotation-driven
实际开发时建议都配置该参数。配置<mvc:annotation-driven/>后,SpringMVC会自动注册RequestMappingHandlerMapping,
RequestMappingHandlerAdapter,ExceptionHandlerExceptionResolver三个bean。
还将提供一下支持
-支持用ConversionServices实例对表单参数进行类型转换,通过配置conversion-service属性自定义类型转换。
-支持使用@NumberFormat注解,@DateTimeFormat注解完成数据类型格式化
-支持使用@Valid注解对JavaBean实例进行JSR303验证
-支持使用@ReqeustBody和@ResponseBody注解
2.InitBinder注解
WebDataBinder用于完成表单字段到JavaBean属性的绑定,而@InitBinder注解则可以对WebDataBinder对象进行初始化,以及数据设定的相关限制。被InitBinder注解修饰的方法不能有返回值,且参数通常为WebDataBinder。
如下例子,规定name属性不会被表单字段自动绑定。
package spring;
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
public class TestController {
@RequestMapping(value="/test", method=RequestMethod.GET)
public String testGet(Map<String, Object>map){
Person person = new Person();
map.put("person", person);
return "form";
}
@RequestMapping(value="/test", method=RequestMethod.POST)
public String testPost(Person person){
System.out.println(person);
return "success";
}
@InitBinder
public void testBinder(WebDataBinder dataBinder){
dataBinder.setDisallowedFields("name");
}
}
3.数据格式化
表单的数据转换是将字符串形式的表单数据转换为JavaBean对象,如果是简单的对象不需要格式,则不需要特殊指定,但是比如日期类型的格式,如果不指定,则无法进行格式化,因为不知道是2016/6/4格式,还是2016-6-4格式。为了让SpringMVC在进行格式化时知道具体的目标,只需要在JavaBean对象中使用合适的注解进行类型,格式化标注即可。
注解类型有:
-@NumberFormat
有两个互斥的属性,style:Style.NUMBER 正常数字,Style.PERCENT 百分数,Style.CURRENCY 货币
pattern:类型为String,可以进行自定义样式比如“#,###”
-@DateTimeFormat 可以对Date,Calendar,Long时间类型进行标注,有一个pattern属性,可以赋值比如“yyyy-MM-dd hh:mm:ss"的格式。
public class Person {
@NumberFormat(pattern="##,##") //注意.是小数的关键字,