struts2讲义王昭珽0621Word下载.docx

上传人:b****5 文档编号:21366989 上传时间:2023-01-30 格式:DOCX 页数:55 大小:106.33KB
下载 相关 举报
struts2讲义王昭珽0621Word下载.docx_第1页
第1页 / 共55页
struts2讲义王昭珽0621Word下载.docx_第2页
第2页 / 共55页
struts2讲义王昭珽0621Word下载.docx_第3页
第3页 / 共55页
struts2讲义王昭珽0621Word下载.docx_第4页
第4页 / 共55页
struts2讲义王昭珽0621Word下载.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

struts2讲义王昭珽0621Word下载.docx

《struts2讲义王昭珽0621Word下载.docx》由会员分享,可在线阅读,更多相关《struts2讲义王昭珽0621Word下载.docx(55页珍藏版)》请在冰豆网上搜索。

struts2讲义王昭珽0621Word下载.docx

示例

自定义类型转换器

TypeConverter接口

struts2内建的类型转换器并不能解决所有的问题,那就需要自己创建类型转换器。

自定义的类型转换器必须实现ognl.TypeConverter接口或对这个接口的某种具体实现做进一步扩展。

TypeConverter接口只有一个名为convertValue的方法,它的方法签名如下:

publicObjectconvertValue(Map<

String,Object>

context,Objecttarget,Membermember,StringpropertyName,Objectvalue,ClasstoType);

参数:

context:

将在其中进行类型转换的OGNL上下文环境。

target:

将在其中对有关属性进行设置的目标对象。

member:

将被设置的类成员的名字。

propertyName:

将被设置的属性的名字。

value:

将被转换的值。

toType:

转换结果的类型。

DefaultTypeConverter

与自行实现TypeConverter接口相比,对该类扩展更容易一些,他是对TypeConverter金额接口的一种默认实现类,且他有简单的方法签名。

context,Objectvalue,ClasstoType){

returnconvertValue(value,toType);

}

publicObjectconvertValue(Map<

context,Objecttarget,Membermember,

StringpropertyName,Objectvalue,ClasstoType){

returnconvertValue(context,value,toType);

}

自定义类型转换器的配置

在使用一个自定义的类型转换器之前,必须先对它进行配置。

这种配置可以基于字段,也可以基于类。

基于字段:

在动作类所在的包中创建ActionClass-conversion.properties的文件,其中的内容可能为下所示:

fieldname=customConverter1

基于类:

在WEB-INF/classes子目录下创建一个conversion.properties文件,其中的内容可能为下所示:

fullQualifieldClassName=customerConverter1

与复杂对象的配合使用

与Collection配合使用

与Map配合使用

验证

Strut2验证可以通过一个XML配置文件和注解的方式来实现,当然手工验证(编码验证)也是支持的。

同时也可以通过XML和注解共同使用的方式实现联合验证。

Struts2的验证是通过validation和workflow拦截器实现的,它们都属于defaultinterceptorstack。

validation拦截器用于验证并组织错误消息。

workflow拦截器用于检测是否包含错误消息,假如有,它将返回结果为input所指向的页面,并将错误消息和原先输入的数据一同呈现给客户。

如果您的程序中使用了默认的验证(或者转换器)而没有提供为input的结果,则将出现错误。

注解验证

注解验证从struts2.1版本开始就不建议使用了。

基础验证BasicValidation

让我们一步一步做一个基础验证的示例

1.步骤一:

创建输入表单

create.jsp

<

body>

<

s:

formaction="

helloValidation"

>

<

textfieldname="

name"

label="

姓名"

/s:

textfield>

age"

年龄"

address"

籍贯"

submitvalue="

提交"

submit>

form>

/body>

2.步骤二:

创建动作类

HelloAction.java

packagecn.wzhting;

importcom.opensymphony.xwork2.ActionSupport;

publicclassHelloActionextendsActionSupport{

privatestaticfinallongserialVersionUID=117358005790515177L;

privateStringname;

privateIntegerage;

privateStringaddress;

publicStringgetName(){

returnname;

publicvoidsetName(Stringname){

this.name=name;

publicIntegergetAge(){

returnage;

publicvoidsetAge(Integerage){

this.age=age;

publicStringgetAddress(){

returnaddress;

publicvoidsetAddress(Stringaddress){

this.address=address;

3.步骤三:

创建验证器。

验证配置文件必须是以下两种形式之一

●<

ActionClassName>

-validation.xml

-<

ActionAliasName>

HelloAction-validation.xml

?

xmlversion="

1.0"

encoding="

UTF-8"

!

DOCTYPEvalidatorsPUBLIC

"

-//OpenSymphonyGroup//XWorkValidator1.0.2//EN"

validators>

fieldname="

field-validatortype="

requiredstring"

<

message>

请输入姓名<

/message>

/field-validator>

/field>

int"

paramname="

min"

13<

/param>

max"

19<

年龄为13~19周岁的才允许填写<

/validators>

4.步骤四:

请确认你的struts.xml文件中该动作有input的结果。

struts.xml

actionname="

class="

cn.wzhting.HelloAction"

resultname="

success"

/createConfirm.jsp<

/result>

error"

/error.jsp<

input"

/create.jsp<

/action>

假如你没有这样设置,你将会得到“Noresultdefinedforaction***andresultinput”的错误提示。

客户端验证Client-sideValidation

让我们一步一步做一个客户端验证的示例

标签的validate设置为true;

●某些主题(themes)不支持客户端验证;

步骤一:

head>

metahttp-equiv="

Content-Type"

content="

text/html;

charset=UTF-8"

/>

title>

Validation-Basic<

/title>

head/>

/head>

helloValidation.action"

validate="

true"

注意:

●虽然使用了<

标签,此处我们只是利用其默认样式。

●虽然struts2中的动作带不带action后缀效果一样,但是在此处最好加上action后缀,不然会报错。

步骤二、三、四通《基础验证BasicValidation》一节,此处省略。

动作和命名空间(Actionandnamespace)

如果表单提交到的动作不在默认命名空间里,在使用<

时必须指定其namespace属性。

例如,helloValidation在命名空间/ns内,可能的struts.xml如下:

packagename="

p1"

extends="

struts-default"

namespace="

/ns"

/package>

输入表单如下:

看上去应该能正常运行,客户端验证将不能。

struts必须准确的知道动作所在的命名空间(不是通过URL),因此正确的写法如下:

/ns/helloValidation.action"

内建验证器

struts2为我们共内置了16个验证器,且全部是基于字段的验证器。

requiredvalidator

功能

用来验证某个给定的字段的值不是null。

注意,空字符串不是null。

参数

参数名

类型

默认值

必须的

描述

fieldName

String

no

要验证的字段名

(用法见后面的说明)

页面:

fielderror/>

validate"

userName"

用户名"

登录"

动作类:

publicclassValidationActionextendsActionSupport{

privatestaticfinallongserialVersionUID=6877330242746547448L;

privateStringuserName;

privateStringpassword;

publicStringgetUserName(){

returnuserName;

publicvoidsetUserName(StringuserName){

this.userName=userName;

publicStringgetPassword(){

returnpassword;

publicvoidsetPassword(Stringpassword){

this.password=password;

验证配置文件:

password"

required"

Thepasswordfieldisrequired!

运行结果:

说明

验证配置文件的另外一种写法:

validatortype="

password<

/validator>

requiredstringvalidator

验证给定的字段的值既不是null、也不是空白。

trim

Boolean

true

验证前是否要去掉前导和尾缀的空白字符

required="

requiredposition="

left"

passwordname="

密码"

password>

PleaseinputtheuserName!

trim"

false<

Pleaseinputthepassword!

userName<

intvalidator

用来验证某个字段的值是否可以被转换为一个整数。

若指定参数,还验证是否在允许的范围内。

min

Integer

允许的最小值。

若没有给出该参数则无限制

max

允许的最大值。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1