Struts2获取参数的几种方式
Struts2由于是一个贴心的框架,所以获取参数这种体力活,就无需再通过原生的request来getParameter了,有如下几种方式进行获取
1、Action中属性驱动,必须提供与form表单name相同的后台属性get/set,这种方式适合数据量比较少的form表单提交
2、大数据量的form表单,这时一般对应后台的一个实体类,所以这时还在每个action写属性驱动,那就会代码冗余,这时可以定义一个对象来属性来进行参数接收,如User对象,只是前台传参数的时候,需要先写对象名再点对象下的属性的写法,这种写法有点是可以定义多个对象属性进行接收,缺点是前台传参比较麻烦,例子如下:
![]()
|
![]()
|
3、但是对象驱动还是不太方便,需要前台传参数时写出对象的名再点出属性值,所以还可以使用更方便的模型驱动,不需要写出类变量名再点属性,直接写类变量的属性名就可以把数据提交给模型自动接收,只需要Action实现ModelDriven<T>即可,模型驱动和类属性驱动本质差不多,但必须在Action中先new进行实例化,当然如果还有额外的不属于模型的属性需要传递,但是由于模型没有相应属性,所以无法接收,这时还需要自己在Action中添加相应的属性驱动来进行接收,模型驱动的缺点是只能接收一个模型类,不如对象驱动可以定义多个进行接收,但是优点是前台传参方便
![]()
|
![]()
|
4、参数接收类型说明:常用的8大基本数据类型都可以实现自动装箱,不过定义成员变量时建议使用包装类型,因为包装类型可以接收null值,还有一点需要注意的就是8大基本数据类型中的日期类型格式只支持2017-08-6这种格式,而不支持2017/08/6等其他类型,所以为了方便,在jsp界面上就不让用户输入日期,而是采用只读形式的日期选择控件,限定为-这种形式,反正中国人大都喜欢-这种形式的日期,尤其是内网开发更不必要去进行复杂而无谓的日期格式转换定义
5、集合参数封装,form表单中name相同的表单值会自动封装到集合属性中
5.1)、List集合封装
![]()
|
![]()
|
显示结果为:
如果是一个个以相同名,如上,进行提交,那么List集合接收到参数会自动进行顺序add,而如果提交时指定了索引位置,那么会自动提交到list集合的指定位置,如
![]()
|
结果为![]()
|
5.2)、Map集合封装,传参数时得以中括号区分键
![]()
|
![]()
|
结果为:
相关文章
- python+appium自动化测试获取短信+图片验证码
- java基础—采用递归的方式来获取相关目录下的子目录的名称
- PHP通过curl获取json数据进行数组分页
- laravel获取客户端 IP 地址两种方式
- Linux系统用户态根据虚拟地址获取物理地址的方式
- Oracle中修改表名遇到“ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效”
- QGIS QuickOSM 2.0 版本获取路网的方式
- jQuery异步获取json数据的2种方式
- MFC学习之vc通过HTTP请求:Get或Post方式获取JSON信息(亲测可用)
- 最简单也最难——如何获取到Android控件的高度
- Python Streamlit教程大全之 02 获取网络数据数据,缓存网络数据(教程含源码)
- js获取当前时间的前一天/后一天
- 值栈中的值的获取方式
- shell流程控制(流程不可为空、if else流程、for循环、while循环/无限循环、until循环、分支结构case...esac、跳出循环)、shell 函数(定义需在开头、如何调用、有无return返回值差别、函数参数$1 / ${10}、$? 获取返回值及其限制)、shell 输入输出重定向、Here Document重定向方式、/dev/null文件作用、shell文件包含及使用
- 【华为游戏多媒体】调用获取Token接口得到的Token值是null
- 积跬步,聚小流------java获取图片的尺寸
- 获取root权限及破解原理分析
- Python获取xml数据
- java获取当前方法
- leetcode 380. Insert Delete GetRandom O(1) O(1) 时间插入、删除和获取随机元素 (中等)