Action接收参数

2019-09-29 16:30:30 浏览数 (1)

Action接收参数

  1. 简述
  2. 接收参数
    • 方法一
    • 方法二
    • 方法三
  3. 封装集合
  4. 传递错误

01

简述

请求的各种信息参数都是在request对象中,不使用Servlet原生API怎么获取参数呢,Struts2中提供了三种方式(当然原理他还是通过request)

02

方法一

属性封装

直接在Action类中定义与url传入的参数相对应的变量,并设置上set方法,当此url代参数请求后,Action类中对应的变量也就得到了参数的值,这种方法只是在参数少的时候使用并且不能自动封装,当参数多时你需要把这些参数封装在一个对象时需要自己手动去做

03

方法二

表达式封装

创建若干参数形成的对象,Action中直接获取到对象,参数名为“对象名.属性名”对象名对应Action中的,也是需要设置上set方法因为它内部是用反射来获取的。它会自动把名为student.name和student.age的两个参数封装在student对象中并通过点后的字符来匹配对应的类中属性

创建对象

表单传参

Action得到对象

04

方法三

模型驱动的方式

需要实现ModelDrivern接口并覆盖getModel方法,需要手动开辟一个对象给它,它去把参数封装在此对象再返回

ModelDrivern接口

表单传入(name、age)

模板类

action获取

05

封装成集合

封装成列表

通过中括号中的数字来确定是集合中哪个元素(对象),最后再封装在元素中。中括号中就是集合元素的角标。像下面提交后集合会有3个元素第一个也就是角标为0的没有值为空

封装成Map

在中括号的地方自定义key即可

06

接收参数错误

在页面中所有参数值都是字符串的显示,Struts会去自动转化类型。但当你在浏览器提交的参数值与模板类的类型转化不了就会出错,并返回input

下面由于student类中定义的age是Integer类型,传入a这样的字符无法转为整型所以出错,返回input。结果页没有配置input所以出现未找到

原理

在struts-default.xml中配置了很多拦截器,只要拦截器中处理出现问题错误信息就会存在错误信息区,直到最后workflow回去检错误信息区有没有内容如果有就返回input,可以区配置一下input结果页。出错时跳转到相应的页面

0 人点赞