推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

浅谈struts 动态表单Bean

   2023-08-18 网络整理佚名1990
核心提示:标签收集表单数据时,存放表单中的参数数据为表单中对应的用户输入的参数数据java.java.集合中获得属性,在源码中有如下定义:在源码中有如下定义:不方便将大量参数传递到业务层:.的配置不会进行语法检查,因此容易出错可以完成对表单数据的后台验证后台验证实例:插件标签时会立即自动创建出插件对象插件标签中配置了插件类所指的字符串中获取指定文件的指定位置,将两个验证规则文件读取到内存java.java.

○ 定义主类

○ 继承

○ 定义私有属性

○ 提供无参构造方法和相应的get/set方法

○ 根据实际情况添加()和reset()方法

动态的 -

• 使用目的:避免肿胀

• 不需要自己写类,只需要在-.xml中配置,就会自动创建

• 配置:





○ 在标签中配置,type属性为提供的动态类文件

○ 配置标签,name属性的值为表单参数名对应的属性名,type属性的值为表单bean中需要的数据类型【写数据类型的全名】

内部结构:

有两个 Map 集合

§ : -- key是标签中name属性的值,value是对象

□ --封装标签中的各个属性,Sting类型

§ :根据标签采集表单数据时,将参数数据存储在表单中

□ key为标签中定义的name属性,value为用户在表单中输入的对应参数数据

• 动态表单bean 实例:

○ 配置:





○ 启动,创建存储对象:

§--键=“”,值=对象

§--名称=“”,类型=“”

○ 用户发送请求查找请求对应的标签,最终通过name=””找到type=””创建对象:

§ 请求字符串::8080//.do?="tom"&age="23"

○ 创建对象后立即通过配置信息创建对象和集合:

§ 收集:

□ key="" value = [name = "" / type = "java.lang."]

□ key="age" value = [ name = "age" / type = "java.lang." ]

○ 调用()方法收集表单数据:将表单中的数据收集到集合中

:

□ 使用参数名称查找key为的对象

□ 通过对应查找类型

□ 设置Map下的表单参数名称和参数值 -- key = "", value = "tom"

年龄:

□ 使用参数名age查找key为age的对象

□ 通过对应查找类型

□ 在静态Map集合中找到一个整数转换器,将“23”转换为23【将字符串转换为整数】

□ 设置Map下的表单参数名称和参数值 -- key = "age", value = 23

()方法执行中:

通过建模获得,因为数据被采集到Map中,所以要从集合中获取属性,源码中有如下定义:

	public Object get(String name) {
			Object value = dynaValues.get(name); if ( value != null ) { return (value); 
	}

因此: = daf.get(""); 即从动态表单Bean中获取属性就是从集合中取出以key为值的值

进入jsp页面获取数据:

源码中有如下定义:

public Map getMap() {
 return (dynaValues);
} // 用表单Bean 对象调用 getMap() 方法会获取到 dynaValues 集合对象

§ ${.地图。}

□ 当表单Bean对象创建成功后,该对象已被设置到作用域内置对象中,属性名称为name属性值

• 缺点:

® 通过属性名称获取对象

® 通过.()获取对象

® 调用.get(""); 输出属性值

○ 数据传输困难:动态不方便向业务层传递大量参数:动态中不能使用.()方法

○ 编译器不对动态配置进行语法检查,因此容易出错

动态背景验证

• 1 使用动态完成表单数据的后台验证

• 背景验证示例:

创建开始后,读取主配置文件,读取-.xml

打开插件标签时会立即自动创建插件对象




插件类在标签中配置

□ 作为一个插件类,必须实现接口——实现init()和()方法,并且有一个字符串类型的私有属性{

void destroy();
void init(ActionServlet servlet, ModuleConfig config) throws ServletException;
}
public class ValidatorPlugIn implements PlugIn {
private String pathnames = null; public destroy() { }
public void init( ActionServlet servlet, ModuleConfig config) throws ServletException {}
}

§ 创建插件对象后,将表示两个验证规则的 xml 文件注入到插件类的属性中

□ 同时调用init()方法从指向的字符串中获取指定文件的指定位置,并将两个验证规则文件读入内存

如果有一些语句想要一启动就执行,可以写在 // 或者插件对象的 init() 方法中

○ 用户发送请求,通过请求字符串创建对象,同时创建对象和集合: 请求字符串::8080/aaa/.do?=""&=""








§ 此时动态类文件是--继承的

□ 类 orm { }

® 类 { }

□ 内部结构符合

:

□ key="" value = [name = "" / type = "java.lang."]

□ key="" value = [name = "" / type = "java.lang."]

○ 自动将表单数据收集到集合中:

§:

□ 键 = "", 值 = "" [空字符串]

§:

□ 键 = "", 值 = "" [空字符串]

○ 验证规则:


// 说明该验证规则对哪个 ActionForm 中的属性进行验证 // 说明对哪个属性进行验证,说明依赖于哪个规则,本例为不能为空 // 国际化资源文件 mask ^[0-9a-zA-Z]*lt;/var-value>

§ 根据读入内存的验证规则,调用相应的方法验证对象中的数据

§ 如果发现为空字符串,则会生成错误消息。 不再寻找类型,而是直接转向输入属性中的转向路径,并通过标签显示错误信息

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON