bboss mvc参数绑定注解RequestParam使用说明

简介: bboss mvc参数绑定注解RequestParam使用说明 @RequestParam作为控制器方法参数、bean对象属性的注解,可以起到以下5个作用: 1.指定方法参数与request请求参数名称的映射关系 方法参数-当方法参数名称yournames和request参数名称name不...
bboss mvc参数绑定注解RequestParam使用说明

@RequestParam作为控制器方法参数、bean对象属性的注解,可以起到以下5个作用:
1.指定方法参数与request请求参数名称的映射关系
方法参数-当方法参数名称yournames和request参数名称name不一致时,则需要RequestParam注解来指定映射关系

public String sayHelloArray(
			@RequestParam(name = "name") String[] yournames, ModelMap model)


bean属性-当属性名称favovate 和request参数名称favovate_ddd不一致时,则需要RequestParam注解来指定映射关系
@RequestParam(name="favovate_ddd")
	private int favovate ;


这个只是最简单的映射方式,bboss mvc还支持带变量的参数名称映射方式:
@RequestParam(name="favovate${id}")
	private int favovate ;

这里@RequestParam(name="favovate${id}")中的name属性的值为favovate${id},其中的${id}部分的含义是request参数的名称由favovate加上另外一个request参数id的值组合而成,也就是是这个参数名称根据id参数的值来动态生成,这种情况适用于集合参数绑定场景(简单的参数映射也可以使用):
表单代码,输入两个人的姓名和兴趣喜好,提交后绑定成List<ExampleBean> yourname参数
<tr><td>
						<input name="id" type="hidden" value="0">
							请输入您的名字:
						<input name="name" type="text">
						</td>
					</tr>
					<tr><td>喜好:
						<input name="favovate0" type="radio" checked="true"  value="0"> 乒乓球
						<input name="favovate0" type="radio" value="1"> 篮球
						<input name="favovate0" type="radio" value="2"> 排球
						</td>
					</tr>
					
					<tr><td>
						<input name="id" type="hidden" value="1">
							请输入您的名字:
						<input name="name" type="text">
						</td>
					</tr>
					<tr><td>喜好:
						<input name="favovate1" type="radio" checked="true"  value="0"> 乒乓球
						<input name="favovate1" type="radio" value="1"> 篮球
						<input name="favovate1" type="radio" value="2"> 排球
						</td>
					</tr>

控制器方法:
public String sayHelloBeanList(List<ExampleBean> yourname, ModelMap model)
	{

		model.addAttribute("serverHelloListBean", yourname);

		return "path:sayHello";
	}

ExampleBean类的favovate属性分别对应于表单中的favovate0和favovate1,也就是说每条记录对应一组radio的名称都不一样,由favovate+记录id的值组成:
public class ExampleBean
{
	private String id;
	private String name = null;
	private String sex = null;
	@RequestParam(name="favovate${id}")
	private int favovate ;
}

那么在后台就可以通过favovate${id}来指定request参数和属性favovate的映射关系
@RequestParam(name="favovate${id}")
private int favovate ;
目前变量参数名中只能指定一个变量,这个变量在参数名称中的位置可以任意有以下形式:
favovate${id}:假设请求参数id的值为1,那么最终的映射参数名称为favovate1
fav${id}ovate:假设请求参数id的值为1,那么最终的映射参数名称为fav1ovate
${id}favovate:假设请求参数id的值为1,那么最终的映射参数名称为1favovate
也可以只有变量:
${id}:假设请求参数id的值为1,那么最终的映射参数名称为1

变量参数中如果请求参数id的值为null或者""时,变量id对应的名称部分将被忽略,所以一般需要注意这一点。

在控制器方法参数上简单的使用参数变量的示例:
public String sayHelloStringVar(@RequestParam(name = "name${id}") String yourname,
			ModelMap model)

2.指定参数的解码字符集
@RequestParam( decodeCharset = "UTF-8")
private String name;
3.指定日期格式
示例如下:
@RequestParam( dateformat="yyyy-MM-dd") java.util.Date[] d12
4.指定参数的默认值
示例如下:
@RequestParam(defaultvalue="0") int ynum
5.指定参数值转换器Editor
如果请求参数和要绑定的参数类型不能直接转换时需要通过Editor来实现自定义的参数绑定和类型转换,下面是一个实例:
public String sayHelloEditors(@RequestParam(editor="org.frameworkset.mvc.ListStringArrayEditor") List<String[]> name,ModelMap model)


转换器org.frameworkset.mvc.ListStringArrayEditor定义如下:
public class ListStringArrayEditor implements ArrayEditorInf<List<String[]>> {

	@Override
	public List<String[]> getValueFromObject(Object fromValue) {
		if(fromValue == null)
			return null;
		if(fromValue instanceof String[])
		{
			String[] datas = (String[])fromValue; 
			if(datas.length<=0)
				return null;
			List<String[]> ret = new ArrayList<String[]>();
			
			for(String data :datas)
			{
				String[] tt = data.split(",");
				ret.add(tt);
			}
			return ret;
		}
		return null;
		
	}

	@Override
	public List<String[]> getValueFromString(String fromValue) {
		return null;
	}
}

mvc框架参数绑定时,如果指定了类型为ArrayEditorInf的属性编辑器, 则要求mvc框架传入的参数为参数数组,否则只能传入单个值。这个转换器有点复杂,可以看一个简单一点的转换器:
public class ListEditor implements EditorInf<List<String>> {

	public List<String> getValueFromObject(Object fromValue) {
		if(fromValue == null || fromValue.equals(""))
			return null;
			
		return getValueFromString(String.valueOf( fromValue));
		
	}

	public List<String> getValueFromString(String fromValue) {
		List<String> ret = new ArrayList<String>();
		String[] datas = fromValue.split(","); 
		for(String data :datas)
		{
			
			ret.add(data);
		}
		return ret;
	
	}


}

EditorInf类型的editor专门处理单个参数值的转换,ArrayEditorInf类型的editor专门处理数组参数转换;通过这两种类型的editor我们可以实现复杂的参数类型转换。

更多详细信息请参考bboss mvc的参数绑定测试用例:

HelloWord.java
hello.jsp
目录
相关文章
|
23天前
|
JSON 前端开发 Java
Spring MVC——获取参数和响应
本文介绍了如何在Spring框架中通过不同的注解和方法获取URL参数、上传文件、处理cookie和session、以及响应不同类型的数据。具体内容包括使用`@PathVariable`获取URL中的参数,使用`MultipartFile`上传文件,通过`HttpServletRequest`和`@CookieValue`获取cookie,通过`HttpSession`和`@SessionAttribute`获取session,以及如何返回静态页面、HTML代码片段、JSON数据,并设置HTTP状态码和响应头。
41 1
Spring MVC——获取参数和响应
|
3月前
|
XML 前端开发 Java
Spring MVC接收param参数(直接接收、注解接收、集合接收、实体接收)
Spring MVC提供了灵活多样的参数接收方式,可以满足各种不同场景下的需求。了解并熟练运用这些基本的参数接收技巧,可以使得Web应用的开发更加方便、高效。同时,也是提高代码的可读性和维护性的关键所在。在实际开发过程中,根据具体需求选择最合适的参数接收方式,能够有效提升开发效率和应用性能。
118 3
|
3月前
|
XML 前端开发 Java
Spring MVC接收param参数(直接接收、注解接收、集合接收、实体接收)
Spring MVC提供了灵活多样的参数接收方式,可以满足各种不同场景下的需求。了解并熟练运用这些基本的参数接收技巧,可以使得Web应用的开发更加方便、高效。同时,也是提高代码的可读性和维护性的关键所在。在实际开发过程中,根据具体需求选择最合适的参数接收方式,能够有效提升开发效率和应用性能。
168 2
|
3月前
|
XML 前端开发 Java
Spring MVC接收param参数(直接接收、注解接收、集合接收、实体接收)
Spring MVC提供了灵活多样的参数接收方式,可以满足各种不同场景下的需求。了解并熟练运用这些基本的参数接收技巧,可以使得Web应用的开发更加方便、高效。同时,也是提高代码的可读性和维护性的关键所在。在实际开发过程中,根据具体需求选择最合适的参数接收方式,能够有效提升开发效率和应用性能。
36 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
46 0
|
6月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
189 0
|
6月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
78 0
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
163 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
97 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
172 0