内容关键词:
标
签
、
表单
、
绑定、
数据、渲染,集合,配置,转换
//todo xml绑定 需要加入spring-oxm的jar包以及对象添加xml的注解
//Content-Type:application/xml
//
//
// tom
// 10
//
@RequestMapping(value = '/xml')
@ResponseBody
public String xml(@RequestBody Admin admin){
return admin.toString();
}
对Admin类的修改:
package kay.model;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name='admin') //xml根节点
public class Admin{
private String name;
private String age;
@Override
public String toString() {
return 'Admin{' +
'name=' + name +\+
', age=' + age +\+
};
}
@XmlElement(name='name') //xml属性节点
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name='age') //xml属性节点
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
授课老师:张森鹏
Json数据
在maven配置文件中加入jackson-databind的jar包依赖支持对json的解析
//todo json绑定 Content-Type:application/json
// {
// 'name':'tom',
// 'age':10,
// 'contactInfo':{
// 'address':'shenzhen',
// 'phone':10086
// }
//}
@RequestMapping(value = '/json')
@ResponseBody
public String json(@RequestBody User user){
return user.toString();
}
//todo xml绑定 需要加入spring-oxm的jar包以及对象添加xml的注解
//Content-Type:application/xml
//
//
// tom
// 10
//
@RequestMapping(value = '/xml')
@ResponseBody
public String xml(@RequestBody Admin admin){
return admin.toString();
}
对Admin类的修改:
package kay.model;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name='admin') //xml根节点
public class Admin{
private String name;
private String age;
@Override
public String toString() {
return 'Admin{' +
'name=' + name +\+
', age=' + age +\+
};
}
@XmlElement(name='name') //xml属性节点
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name='age') //xml属性节点
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
Spring支持的数据格式转换的三种接口
以Date类型为例:
第一种方式,使用PropertyEditor的实现类,使用CustomDateEditor这个类进行类型绑定
此方式配置的格式转换只在当前controller类中对一个属性生效
//todo 日期转换 /dateType?date1=2017-07-05
@RequestMapping(value = '/dateType')
@ResponseBody
public String date1(@RequestParam('date1') Date date1){
return date1.toString();
}
//todo 局部有效,只在这个controller里面
@InitBinder('date1')
public void initDate1(WebDataBinder binder){
binder.registerCustomEditor(Date.class,new CustomDateEditor(newSimpleDateFormat(
'yyyy-MM-dd'),true));
}
第二种方式,实现Formatter接口,并在配置文件中配置bean对象
public class MyDateFormatter implements Formatter{
public Date parse(String s, Locale locale) throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat('yyyy-MM-dd');
return sdf.parse(s);
}
public String print(Date date, Locale locale) {
return null;
}
}
配置:
第三种,实现Converter接口,并在配置文件中配置bean
public class MyDateConverter implements Converter{
public Date convert(String s) {
SimpleDateFormat simpleDateFormat=newSimpleDateFormat('yyyy-MM-dd');
try {
return simpleDateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
配置和上一种方法类似
从Formatter接口和Converter接口的实现来看,Formatter只能从String类型转换,而Converter接口可以定义从任何类型转换成想要的类型。
以Date类型为例:
第一种方式,使用PropertyEditor的实现类,使用CustomDateEditor这个类进行类型绑定
此方式配置的格式转换只在当前controller类中对一个属性生效
//todo 日期转换 /dateType?date1=2017-07-05
@RequestMapping(value = '/dateType')
@ResponseBody
public String date1(@RequestParam('date1') Date date1){
return date1.toString();
}
//todo 局部有效,只在这个controller里面
@InitBinder('date1')
public void initDate1(WebDataBinder binder){
binder.registerCustomEditor(Date.class,new CustomDateEditor(newSimpleDateFormat(
'yyyy-MM-dd'),true));
}
第二种方式,实现Formatter接口,并在配置文件中配置bean对象
public class MyDateFormatter implements Formatter{
public Date parse(String s, Locale locale) throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat('yyyy-MM-dd');
return sdf.parse(s);
}
public String print(Date date, Locale locale) {
return null;
}
}
配置:
第三种,实现Converter接口,并在配置文件中配置bean
public class MyDateConverter implements Converter{
public Date convert(String s) {
SimpleDateFormat simpleDateFormat=newSimpleDateFormat('yyyy-MM-dd');
try {
return simpleDateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
配置和上一种方法类似
从Formatter接口和Converter接口的实现来看,Formatter只能从String类型转换,而Converter接口可以定义从任何类型转换成想要的类型。