一、类型转换,由String类型转化为对象类型,两种方式:
1.全局转化(支配项目中所有String与制定对象的转化)-----实现方式:一个全局属性文件,名字固定:
xwork-conversion.properties
配置文件中是正对类对象配置转化该对象的converter;
例如:com.test.bean.Point=com.test.converter.PointConverter
2.局部转化(针对一个aciton控制String转化为对象)-------实现方式:根据不同aciton取名,一个Action一个属性
文件:action名+'-conversion.propertise'
而且配置文件中是针对属性配置转化该属性的converter;例如:point=com.test.converter.PointConverter
类型转化需要程序员提供一个converter类,当然该类继承DefaultTypeConverter或者StrutsTypeConverter
二、类型转化失败提示信息,为实现前台页面用户提交错误信息后系统做出的信息提示:(注意是类型转化失败后提示
信息,而不是信息校验失败)也有两种方式:
1.
全局类型转化失败提示信息(针对项目中所有的action,当前台提交信息错误了,统统以同一种风格显示信息错误)
-----实现方式:一个全局资源(属
性)文件,名字根据struts.xml配置文件中<constant name="struts.custom.i18n.resources"
value="message"></constant>确定,对应这个我们必须取名:message.properties
描
写配置文件例如:xwork.default.invalid.fieldvalue={0}
error,表示当页面信息输入的age对应了abc,类型转化失败后,就会提示"age
errror"而如果日期date输入abc,类型转换失败后,就会提示"date error"。这样显然是不人性化的。
2.局部类型转化失败提示信息(针对指定action相应作出信息响应)-----实现方式:根据不同action取名,一个
action一个属性文件:action名+'.properties'
描写配置文件例如:
invalid.fieldvalue.age=/u5e74/u9f84/u8f93/u5165/u4fe1/u606f/u4e0d/u6b63/u786e,它是针对action
中个属性来确定错误后显示的信息的,非常不错
三、struts2自动类型转化与自动校验:
struts2内置的自动类型转化仅能实现简单类型和string类型间的转化、String与对象间的转化则需要程序员通过“类
型转换”方式了。
struts2做的自动校验实际上只是对类型校验,即当struts2自动类型转化失败时,它便会给出校验失败信息。但校验
信息并不可观。
而
一旦在jsp页面中引用了struts2的标签<%@ taglib prefix="s" uri="/struts-tags"
%>,并使用其中的标签<s:textfield name="username"
label="username">这些,struts2都会自动在类型转化失败后给出校验失败信息。
而这种信息并不友好,所以我们为了更人性化有两种选择:
1.不使用struts2标签,引用html自带的form标签(显然这是最糟糕的选择,因为struts2标签拥有很多优势)。
2.使用struts2标签,将它的自动校验信息根据我们的要求来显示,即改变struts2的默认提示。显然这是很棒的。
四、struts2人为校验,有两种校验方案
1.重写validate()方法,在方法体内做逻辑判断和增加错误提示信息。该方法会对所在
action中的所有execute()逻辑方法做校验,例如我们有input()方法、有update()方法,都会被它校验,也就是说,
对于
action而言,validate方法是它的全局校验方法。针对这种不方便,struts2提供了局部校验方法:
2.validate+方法名
()方法,例如方法input()的校验方法就为:validateInput(),而update()的校验方法也自然就
是:validateUpdate(),甚至是execute()方法也可以有自己的校验方法:validateExecute()。
五、类型转化失败提示信息与校验失败提示信息:
由于action对前台的信息处理是:首先对其做类型转换,失败了将类型转换失败提示信息放
入fielderror中;然后类型转换失败后的信息依然会接受validate()方法对其做校验信息,如果校验失败了,方法又将
校验失败信息放入
fieldderror中后。则前台将看到两条信息错误提示信息。
例如:前台age属性用户给出了“abc”值,则系统会提示“年龄类型不正确”还会提示“年龄必须在1-150之间”。这种
两种提示显然是不友好的。我们肯定更希望得到在类型不真确的情况下首先提示类型不正确,而在类型真确的前提下
再提示校验不通过的信息。
针
对这种问题,struts2的标签显然带来了不方便,因为它不可避免的对类型进行着自动转换操作,如何让它不执行?
给struts2标签中增加一个属
性:theme。中文意思是风格、主题。我们只需设置theme="simple"。则struts2标签功能就几乎类似于html中
对应标签了。(但是
记住,即使如此,struts2标签还是有优势的:比如它依然能实现回写功能)
六、校验框架
校验框架是通过xml实现,程序员只需要编写一个xml文件,按照一个校验DTD方式编写。
当然校验框架的策略是针对每一个action的,也就是说,对应一个action,你要对它做校验就必须为它配置一个xml,
配置的这个xml是不可能为其他aciton做校验的。
在校验的xml文件取名上也是有规定的:action对应的名字+'-validation.xml'。例如RegisterAction对应的校验配
置文件名只能是:RegisterAction-validation.xml
值得注意的一点:struts2提供了硬编码校验和xml文件校验两种校验方式,如果程序员对一个Action同时用了这两种
校验方式,则
struts2会都进行校验,其校验的方式是先xml文件校验然后执行方法validate校验。所以使用的时候应该确定一种方
式进行校验。
分享到:
相关推荐
4.8 FileStream示例2:*实现文件本地分段上传 5.1 简单介绍一下MemoryStream 5.2 MemoryStream和FileStream的区别 5.3 通过部分源码深入了解下MemoryStream 5.4 分析MemorySteam最常见的OutOfMemory异常 5.5 ...
dos系统概述及详解 DOS系统简介 dos系统是典型的什么系统 DOS基本概念 dos百度百科 dos系统使用 dos常用命令 dos系统基本命令
### Python 温故知识点解析 #### 一、数值类型 在Python中,数值类型包括整数、长整数、布尔值、浮点数以及复数。 - **整数(Plain integers)**: 普通整数,即我们常见的整数类型。 - **长整数(Long integers)...
9. 要紧语句翻译部分涉及到了对文言文句子的理解,例如“温故而知新,可以为师矣”,意味着通过复习旧知识,可以发现新智慧,从而成为老师。 第二册中的成语: 1. 世外桃源:形容理想中的宁静美好的地方,现在常用...
1. 温故而知新,可以为师矣:强调温习旧知识的重要性,认为能从中获得新见解的人可以成为老师。 2. 学而不思则罔,思而不学则殆:提倡学思结合,避免盲目读书和空洞思考。 3. 默而识之,学而不厌,诲人不倦:表明...
这个"mtk实例教程(新手入门-老手温故)"是为想要理解和掌握MediaTek芯片应用开发的人员准备的指导材料。教程可能涵盖从基础概念到高级实践的各个方面,旨在帮助新手快速上手,并让有经验的老手得以温故知新,提升...
【温故而知新】HTML标签:表单:字符
21. 故:旧的知识、所以、缘故、成心等意思,例如“温故而知新”。 知识点:故的不同意思和用法。 22. 固:顽固、稳固、坚决、本来等意思,例如“汝心之固”。 知识点:固的不同意思和用法。 23. 顾:回头看、看望...
... ... ...- **多媒体支持**:通过`<video>`和`<audio>`元素直接在网页上播放视频和音频,简化多媒体内容集成。...- **图形和动画**:利用`<canvas>`和`SVG`元素绘制图形和创建动画...这些知识对于学习和掌握网页设计至关重要。
【温故而知新】HTML5拖放:地理定位:浏览器支持
[实战无线通信应知应会:新手入门,老手温故].酷哥尔.高清文字版
2. 复习课的功能: - 查漏补缺:根据课程标准,找出学生知识掌握的不足,确保他们达到基本要求。 - 促进知识系统化:通过分类、梳理知识,帮助学生理解知识间的联系,形成整体认知。 - 温故而知新:复习不仅仅是...
《实战无线通信应知应会——新手入门,老手温故》通过深入分析无线通信的基本原理和技术发展,为读者提供了宝贵的理论知识和实践经验。无论是对于刚刚接触无线通信的新手,还是寻求深化理解的老手,这本书都能提供有...
【温故而知新】HTML5的Video:Audio
【温故而知新】HTML表格table:列表ul
【温故而知新】HTML5代码规范:语义元素
【温故而知新】JavaScript初始化:初始化加载
- **温故导入**:复习旧知识以引出新知识,帮助学生构建知识网络。 - **问题导入**:提出挑战性问题,引发学生思考和探索欲望,促进主动学习。 3. **导入设计注意事项**: - 导入应简洁高效,避免占用过多课堂...
很基础的电子基础东西,相信很多朋友是不需要的,不过还是放上去,有需要回顾一下的~~~~~~~ 请看这里!
【温故而知新】HTML链接a标签:图像img标签