Action获取表单数据的方式
ActionContext
- ActionContext context =ActionContext.getActionContext()
- Map map = context.getParameters()
- for(循环遍历){
Object[] obj = map.get(key)// 数组形式,是因为输入项里面可能有复选框}
ServletActionContext
HttpServletRequest ServletActionContext.getRequest()Request.getParameter(String name)…
接口注入方式(不常用)
action操作 域* 对象(request,session,servletContext)*
ServletActionContext 操作- getRequest()
- getSession()
- getServletContext()
Struts2 提供的 获取表单数据 方式
原始获取方式 是通过 ServletActionContext 得到Request域,然后获取Request里的数据,封装到实体类对象中
属性封装(可以参考Spring的属性注入,有点类似,set方法注入)
- 在action中定义成员变量(名字要与表单数据的name匹配)
生成变量的set方法(底层原理:先通过Request域获取到表单数据,然后拿到数据的name去与action的属性匹配,如果成功,就调用属性的set方法,将数据传入)
缺点: 只能封装到属性里,不能直接封装到实体对象中(需要手动封装)
模型驱动封装: (重点,常用)
可以把数据直接封装到实体类对象里- 让action实现接口ModelDriven
- 创建实体类对象(接收表单数据)
实现接口里的getModel() 方法,并返回创建的实体类对象
前提要求:表单输入项的name属性值要与 实体类的属性名称 一致 ,如果不一致,是不能封装的
表达式封装
与属性封装类似,可以看做是属性封装的改良版本- action中定义 实体类
- 生成 set 方法, 而且 必须 生成 get方法
- 在表单页面需要修改name值为 user.username
原理: 先是通过get方法 创建 实体类,然后set方法将表单的值传入到对象里,所以在表单页面中需要修改成 类.属性 user.name
封装到List/Map 集合
方式同 表达式封装
action 中 :
private List
get /set
表单中:
list[0].username // 第一个User对象
list[1].username // 第二个。。。Map的话 map[“key值可以任意写”].username..
3. Struts2之获取表单数据
最新推荐文章于 2023-01-06 16:04:17 发布