一、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数据绑定一(基本类型、数组和对象(简单对象、层级对象、多参数对象))的更多相关文章

  1. python实例编写(2)--等待,一组对象,层级元素,frame对象处理

    一.设置等待 #coding=utf-8 from selenium import webdriver from selenium.webdriver.support.ui import WebDri ...

  2. JSon_零基础_002_将List类型数组转换为JSon格式的对象字符串,返回给界面

    将List类型数组转换为JSon格式的对象字符串,返回给界面 所需要导入的包: 编写bean: package com.west.webcourse.po; /** * 第01步:编写bean类, * ...

  3. springMVC数据绑定入门

    数据绑定是将用户输入绑定到领域模型的一种特性. @controller 注解使类生效 @RequestMapping(value="",meithod = RequestMetho ...

  4. SpringMVC后台接收list类型的数据的实现方式

    一.背景 最近在做一些东西的时候,遇到一个需要Springmvc后台接收list类型数据的需求,几经辗转才完美解决了这个问题,今天记下来方便以后使用,也分享给需要的小伙伴们~ 二.实现方式 1.实现方 ...

  5. GridView的七种数据绑定列的类型

    1.BoundField 用于显示普通文本,是默认的数据绑定列的类型,一般自动生成的列就是该类型,需要注意是DataFormatString属性,该属性可以设置显示的格式,常见格式有:{0:C} 设置 ...

  6. 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

    [源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, con ...

  7. JavaScript学习笔记3之 数组 & arguments(参数对象)& 数字和字符串转换 & innerText/innerHTML & 鼠标事件

    一.Array数组 1.数组初始化(Array属于对象类型) /*关于数组的初始化*/ //1.创建 Array 对象--方法1: var arr1=[]; arr1[0]='aa';//给数组元素赋 ...

  8. C#3.0新特性:隐式类型、扩展方法、自动实现属性,对象/集合初始值设定、匿名类型、Lambda,Linq,表达式树、可选参数与命名参数

    一.隐式类型var 从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var.隐式类型可以替代任何类型,编译器自动推断类型. 1.var类型的局部变量必须赋予初始值,包括匿名 ...

  9. 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”。

    无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Wor ...

随机推荐

  1. c# CacheManager 缓存管理

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. nodejs-runoob

    是否安装成功nodejs - node -v 是否安装成功npm - npm -v

  3. 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 ...

  4. 【BZOJ1975】[Sdoi2010]魔法猪学院 A*

    [BZOJ1975][Sdoi2010]魔法猪学院 Description iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪 ...

  5. EasyDarwin开源音频解码项目EasyAudioDecoder:基于ffmpeg的安卓音频(AAC、G726)解码库(第一部分,ffmpeg-android的编译)

    ffmpeg是一套开源的,完整的流媒体解决方案.基于它可以很轻松构建一些强大的应用程序.对于流媒体这个行业,ffmpeg就像圣经一样的存在.为了表达敬意,在这里把ffmpeg官网的一段简介搬过来,ff ...

  6. 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 ...

  7. cerery

    cerery http://docs.celeryproject.org/en/latest/userguide/index.html

  8. ElasticSearch(九)基于version进行乐观锁并发控制

    一.基于version进行乐观锁并发控制 1).查看一条document GET /test_version/test_version_type/ { "_index" : &qu ...

  9. Linux struct itimerval使用方法

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/hbuxiaofei/article/details/35569229 先看一段代码 #include ...

  10. RobotFramework教程使用笔记——时间控件的相关操作

    在web测试过程中,我们可能会遇到时间控件,有的是支持直接输入的,有的为了保证输入时间格式的一致性是只支持点击选择的,那么这个时候如何用robotframework来操作呢? 看下面这个例子: 这个是 ...