SpringMVC数据绑定一(基本类型、数组和对象(简单对象、层级对象、多参数对象))
一、int和Integer类型
如:参数为int类型的请求
@Controller
public class TestController {
@RequestMapping(value="/baseType")
@ResponseBody//直接返回字符串界面,不用请求获取jsp页面。去掉报404错误,找不到页面。
public String baseType(int age) {
return "age:"+age;
}
}
1。参数为int类型的请求,若没有传入参数,报500的错误
2.参数为int类型的请求,若参数类型错误,报400的错误
正确
1.2@RequestParam
@Controller
public class TestController {
@RequestMapping(value="/baseType")
@ResponseBody
//@RequestParam注解value属性为传参别名,defaultValue默认赋值,required是否必须传值默认true。
//若把required设置为false,不传参则不报错
public String baseType(@RequestParam(value="xage",defaultValue="1",required=false) int age) {
return "age:"+age;
}
}
如:参数为Integer类型
1.若参数请求为Integer类型,没有参数,自动给参数赋值为null
2.若参数请求为Integer类型,参数l类型不匹配,同上也报400错误。
二、参数为数组类型
//http://127.0.0.1:8080/SpringMVC/array?name=Tom&name=Lucy&name=jim
@RequestMapping(value="array")
@ResponseBody
public String array(String[] name) {
StringBuilder sbf = new StringBuilder();
for(String item:name) {
sbf.append(item).append(" ");
}
return sbf.toString();
}
三、参数为对象(简单对象)
//model
public class User {
private String name;
private Integer age; //getter and setting ......
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}
//http://127.0.0.1:8080/SpringMVC/object?name=Tom&age=20
@RequestMapping(value="object")
@ResponseBody
public String object(User user) {
return user.toString();
}
三、参数为对象(多层级对象)
1.1model
//联系信息类
public class ContactInfo {
private String phone;
private String address;
//getting and setting............
@Override
public String toString() {
return "ContactInfo [phone=" + phone + ", address=" + address + "]";
}
}
//用户类
public class User {
private String name;
private Integer age;
private ContactInfo contactInfo; //getting and setting............
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", contactInfo=" + contactInfo + "]";
}
}
//http://127.0.0.1:8080/SpringMVC/object?name=Tom&age=20&contactInfo.phone=10086&contactInfo.address=ss
@RequestMapping(value="object")
@ResponseBody
public String object(User user) {
return user.toString();
}
结果显示:
1.2 若参数为2个对象
@RequestMapping(value="object")
@ResponseBody
public String object(User user,Admin admin) {
return user.toString()+" "+admin.toString();
}
两个参数对象被赋予相同的参数
解决办法@InitBinder
//http://127.0.0.1:8080/SpringMVC/object?user.name=Tom&age=20&admin.name=lucy
@RequestMapping(value="object")
@ResponseBody
public String object(User user,Admin admin) {
return user.toString()+" "+admin.toString();
} @InitBinder("user")
public void initUser(WebDataBinder binder) {
binder.setFieldDefaultPrefix("user.");
} @InitBinder("admin")
public void initAdmin(WebDataBinder binder) {
binder.setFieldDefaultPrefix("admin.");
}
SpringMVC数据绑定一(基本类型、数组和对象(简单对象、层级对象、多参数对象))的更多相关文章
- python实例编写(2)--等待,一组对象,层级元素,frame对象处理
一.设置等待 #coding=utf-8 from selenium import webdriver from selenium.webdriver.support.ui import WebDri ...
- JSon_零基础_002_将List类型数组转换为JSon格式的对象字符串,返回给界面
将List类型数组转换为JSon格式的对象字符串,返回给界面 所需要导入的包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * ...
- springMVC数据绑定入门
数据绑定是将用户输入绑定到领域模型的一种特性. @controller 注解使类生效 @RequestMapping(value="",meithod = RequestMetho ...
- SpringMVC后台接收list类型的数据的实现方式
一.背景 最近在做一些东西的时候,遇到一个需要Springmvc后台接收list类型数据的需求,几经辗转才完美解决了这个问题,今天记下来方便以后使用,也分享给需要的小伙伴们~ 二.实现方式 1.实现方 ...
- GridView的七种数据绑定列的类型
1.BoundField 用于显示普通文本,是默认的数据绑定列的类型,一般自动生成的列就是该类型,需要注意是DataFormatString属性,该属性可以设置显示的格式,常见格式有:{0:C} 设置 ...
- 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用
[源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, con ...
- JavaScript学习笔记3之 数组 & arguments(参数对象)& 数字和字符串转换 & innerText/innerHTML & 鼠标事件
一.Array数组 1.数组初始化(Array属于对象类型) /*关于数组的初始化*/ //1.创建 Array 对象--方法1: var arr1=[]; arr1[0]='aa';//给数组元素赋 ...
- C#3.0新特性:隐式类型、扩展方法、自动实现属性,对象/集合初始值设定、匿名类型、Lambda,Linq,表达式树、可选参数与命名参数
一.隐式类型var 从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var.隐式类型可以替代任何类型,编译器自动推断类型. 1.var类型的局部变量必须赋予初始值,包括匿名 ...
- 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。
无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Wor ...
随机推荐
- c# CacheManager 缓存管理
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- nodejs-runoob
是否安装成功nodejs - node -v 是否安装成功npm - npm -v
- sql中in/not in 和exists/not exists的使用方法差别
1:首先来说in/not in的使用方法 in/not in是确定单个属性的值是否和给定的值或子查询的值相匹配: select * from Student s where s.id in(1,2,3 ...
- 【BZOJ1975】[Sdoi2010]魔法猪学院 A*
[BZOJ1975][Sdoi2010]魔法猪学院 Description iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪 ...
- EasyDarwin开源音频解码项目EasyAudioDecoder:基于ffmpeg的安卓音频(AAC、G726)解码库(第一部分,ffmpeg-android的编译)
ffmpeg是一套开源的,完整的流媒体解决方案.基于它可以很轻松构建一些强大的应用程序.对于流媒体这个行业,ffmpeg就像圣经一样的存在.为了表达敬意,在这里把ffmpeg官网的一段简介搬过来,ff ...
- poj 1286 Necklace of Beads poj 2409 Let it Bead HDU 3923 Invoker <组合数学>
链接:http://poj.org/problem?id=1286 http://poj.org/problem?id=2409 #include <cstdio> #include &l ...
- cerery
cerery http://docs.celeryproject.org/en/latest/userguide/index.html
- ElasticSearch(九)基于version进行乐观锁并发控制
一.基于version进行乐观锁并发控制 1).查看一条document GET /test_version/test_version_type/ { "_index" : &qu ...
- Linux struct itimerval使用方法
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/hbuxiaofei/article/details/35569229 先看一段代码 #include ...
- RobotFramework教程使用笔记——时间控件的相关操作
在web测试过程中,我们可能会遇到时间控件,有的是支持直接输入的,有的为了保证输入时间格式的一致性是只支持点击选择的,那么这个时候如何用robotframework来操作呢? 看下面这个例子: 这个是 ...