假如这个世界上只剩下你一个人,当你正坐在屋子里的时候,这时突然响起了敲门声...
Struts2教程4:使用validate方法验证数据
上一篇 / 下一篇 2008-04-17 17:23:22 / 个人分类:struts2
查看( 183 ) /
评论( 1 )
本文为原创,如需转载,请注明作者和出处,谢谢!ITPUB个人空间s'\9O9cw+ad!X
s|!?3JdWP/x0在Struts2中最简单的验证数据的方法是使用validate。我们从ActionSupport类的源代码中可以看到,ActionSupport类实现了一个Validateable接口。这个接口只有一个validate方法。如果Action类实现了这个接口,Struts2在调用execute方法之前首先会调用这个方法,我们可以在validate方法中验证,如果发生错误,可以根据错误的level选择字段级错误,还是动作级错误。并且可使用addFieldError或addActionError加入相应的错误信息,如果存在Action或Field错误,Struts2会返回“input”(这个并不用开发人员写,由Struts2自动返回),如果返回了“input”,Struts2就不会再调用execute方法了。如果不存在错误信息,Struts2在最后会调用execute方法。
e}U{V0这两个add方法和ActionErrors类中的add方法类似,只是add方法的错误信息需要一个ActionMessage对象,比较麻烦。除了加入错误信息外,还可以使用addActionMessage方法加入成功提交后的信息。当提交成功后,可以显示这些信息。ITPUB个人空间 KPE`D6M i
以上三个add方法都在ValidationAware接口中定义,并且在ActionSupport类中有一个默认的实现。其实,在ActionSupport类中的实现实际上是调用了ValidationAwareSupport中的相应的方法,也就是这三个add方法是在ValidationAwareSupport类中实现的,代码如下:
{,P9v@:XCB'J N@0
IF2I#Bos7V)m0private final ValidationAwareSupportvalidationAware = new ValidationAwareSupport();
~+ok9F.P:qf*o0ITPUB个人空间#sI[%T0~-i1l/{0f5K
public void addActionError(String anErrorMessage)
`6n&I6W-KbxcJ6p L0{ITPUB个人空间[E [%TZ2aPH6d
validationAware.addActionError(anErrorMessage);ITPUB个人空间~D2H4qs
}
(ulQ~^0public void addActionMessage(StringaMessage)ITPUB个人空间7PH)^"xM(OY5J
{ITPUB个人空间2[!s]!oiRx6w
validationAware.addActionMessage(aMessage);ITPUB个人空间8bvW+R6S0?D9Z
}
&U DxFq0public void addFieldError(String fieldName,String errorMessage)
,f:S R8@&{1R"n0{ITPUB个人空间pP:@.Y;BGA1]
validationAware.addFieldError(fieldName,errorMessage);
GBe/f*g(hU0}
FLLP{o?0
sOs-Ui`9t0下面我们来实现一个简单的验证程序,来体验一个validate方法的使用。
/L].j_ F~0ITPUB个人空间X&KwDhW}!f|
先来在Web根目录建立一个主页面(validate.jsp),代码如下:
Yg-R?iQ0ITPUB个人空间i/fnm&G9d!G-O2l
<%@ page language="java"import="java.util.*" pageEncoding="GBK"%>ITPUB个人空间*h#\M eZZ^?
<%@ taglib prefix="s"uri="/struts-tags" %>
Xcw#pqmK:K+|z0<html>ITPUB个人空间iEH%uv
ITPUB个人空间 `tV?(eI5C_&fc |.\
<head>ITPUB个人空间{^_ L3o)H,c
#rJC9z#jS-d0<title>验证数据</title>ITPUB个人空间0t?2I8Y"l+|.r*~1J
ITPUB个人空间*a+vyr{Ev0QI
</head>ITPUB个人空间 fCZ(o f
ITPUB个人空间t1{#n:WQ\ U+Ct
ITPUB个人空间4`[(n \3X.k3R!~,u'Z
ITPUB个人空间C+AsD1_.\
<body>ITPUB个人空间 k DO Y)[+^m3\ Om]
ITPUB个人空间X(}9AsO S
<s:actionerror/>ITPUB个人空间XOLG7[
/K.V({pd.rr3n0<s:actionmessage/>
$Z2VP&I+W0k gq|0
+p!qs%Gi0<s:form. action="validate.action"
NwE6N2Xg0theme="simple">
y_,Fh;Eex j0
mWT.dBV(G9w0输入内容:<s:textfieldname="msg"/>
pH X4xK2B0
_0EQ;ZK7eb|%Y*eB0<s:fielderrorkey="msg.hello" />
j C:Z8a4[L7A0
b `fa~o1t-BeC k7k0<br/>ITPUB个人空间%bNer-A
/G f0^ OOd%a0<s:submit/>
Qz]2k?6Ht x ? i0ITPUB个人空间W2f-O D+|
</s:form>
.SV8L(XK1u*K)k&N0
Q dOqz/|3q4LN0</body>
l7zNp} c;C5p-~0</html>
QPE OF0
_5CQ N4{1Jn0在上面的代码中,使用了Struts2的tag:<s:actionerror>、<s:fielderror>和<s:actionmessage>,分别用来显示动作错误信息,字段错误信息,和动作信息。如果信息为空,则不显示。
%gx*g!\4etTJ0
s|!?3JdWP/x0在Struts2中最简单的验证数据的方法是使用validate。我们从ActionSupport类的源代码中可以看到,ActionSupport类实现了一个Validateable接口。这个接口只有一个validate方法。如果Action类实现了这个接口,Struts2在调用execute方法之前首先会调用这个方法,我们可以在validate方法中验证,如果发生错误,可以根据错误的level选择字段级错误,还是动作级错误。并且可使用addFieldError或addActionError加入相应的错误信息,如果存在Action或Field错误,Struts2会返回“input”(这个并不用开发人员写,由Struts2自动返回),如果返回了“input”,Struts2就不会再调用execute方法了。如果不存在错误信息,Struts2在最后会调用execute方法。
e}U{V0这两个add方法和ActionErrors类中的add方法类似,只是add方法的错误信息需要一个ActionMessage对象,比较麻烦。除了加入错误信息外,还可以使用addActionMessage方法加入成功提交后的信息。当提交成功后,可以显示这些信息。ITPUB个人空间 KPE`D6M i
以上三个add方法都在ValidationAware接口中定义,并且在ActionSupport类中有一个默认的实现。其实,在ActionSupport类中的实现实际上是调用了ValidationAwareSupport中的相应的方法,也就是这三个add方法是在ValidationAwareSupport类中实现的,代码如下:
{,P9v@:XCB'J N@0
IF2I#Bos7V)m0private final ValidationAwareSupportvalidationAware = new ValidationAwareSupport();
~+ok9F.P:qf*o0ITPUB个人空间#sI[%T0~-i1l/{0f5K
public void addActionError(String anErrorMessage)
`6n&I6W-KbxcJ6p L0{ITPUB个人空间[E [%TZ2aPH6d
validationAware.addActionError(anErrorMessage);ITPUB个人空间~D2H4qs
}
(ulQ~^0public void addActionMessage(StringaMessage)ITPUB个人空间7PH)^"xM(OY5J
{ITPUB个人空间2[!s]!oiRx6w
validationAware.addActionMessage(aMessage);ITPUB个人空间8bvW+R6S0?D9Z
}
&U DxFq0public void addFieldError(String fieldName,String errorMessage)
,f:S R8@&{1R"n0{ITPUB个人空间pP:@.Y;BGA1]
validationAware.addFieldError(fieldName,errorMessage);
GBe/f*g(hU0}
FLLP{o?0
sOs-Ui`9t0下面我们来实现一个简单的验证程序,来体验一个validate方法的使用。
/L].j_ F~0ITPUB个人空间X&KwDhW}!f|
先来在Web根目录建立一个主页面(validate.jsp),代码如下:
Yg-R?iQ0ITPUB个人空间i/fnm&G9d!G-O2l
<%@ page language="java"import="java.util.*" pageEncoding="GBK"%>ITPUB个人空间*h#\M eZZ^?
<%@ taglib prefix="s"uri="/struts-tags" %>
Xcw#pqmK:K+|z0<html>ITPUB个人空间iEH%uv
ITPUB个人空间 `tV?(eI5C_&fc |.\
<head>ITPUB个人空间{^_ L3o)H,c
#rJC9z#jS-d0<title>验证数据</title>ITPUB个人空间0t?2I8Y"l+|.r*~1J
ITPUB个人空间*a+vyr{Ev0QI
</head>ITPUB个人空间 fCZ(o f
ITPUB个人空间t1{#n:WQ\ U+Ct
ITPUB个人空间4`[(n \3X.k3R!~,u'Z
ITPUB个人空间C+AsD1_.\
<body>ITPUB个人空间 k DO Y)[+^m3\ Om]
ITPUB个人空间X(}9AsO S
<s:actionerror/>ITPUB个人空间XOLG7[
/K.V({pd.rr3n0<s:actionmessage/>
$Z2VP&I+W0k gq|0
+p!qs%Gi0<s:form. action="validate.action"
NwE6N2Xg0theme="simple">
y_,Fh;Eex j0
mWT.dBV(G9w0输入内容:<s:textfieldname="msg"/>
pH X4xK2B0
_0EQ;ZK7eb|%Y*eB0<s:fielderrorkey="msg.hello" />
j C:Z8a4[L7A0
b `fa~o1t-BeC k7k0<br/>ITPUB个人空间%bNer-A
/G f0^ OOd%a0<s:submit/>
Qz]2k?6Ht x ? i0ITPUB个人空间W2f-O D+|
</s:form>
.SV8L(XK1u*K)k&N0
Q dOqz/|3q4LN0</body>
l7zNp} c;C5p-~0</html>
QPE OF0
_5CQ N4{1Jn0在上面的代码中,使用了Struts2的tag:<s:actionerror>、<s:fielderror>和<s:actionmessage>,分别用来显示动作错误信息,字段错误信息,和动作信息。如果信息为空,则不显示。
%gx*g!\4etTJ0