struts中validation验证无效
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts中validation验证无效相关的知识,希望对你有一定的参考价值。
RT!
没有报任何错误信息,就好像根本就没写似的。
struts-config.xml
<form-bean name="userLoginForm" type="com.yourcompany.struts.validator.DynaValidatorForm.UserLoginForm" >
<form-property name="userName" type="java.lang.String" />
<form-property name="password" type="java.lang.String" />
<message-resources parameter="ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
<set-property property="stopOnFirstError" value="true"/>
</plug-in>
validation.xml
<form name="userLoginForm">
<field property="userName"
depends="requried,minlength">
<arg0 key="label.username"/>
<arg1 name="minlength" key="$var:minlength" resource="false"/>
<var>
<var-name>minlength</var-name>
<var-value>3</var-value>
</var>
</field>
<field property="password"
depends="required,minlength">
<arg0 key="label.password"/>
<arg1 name="minlength" key="$var:minlength" resource="false"/>
<var>
<var-name>minlength</var-name>
<var-value>3</var-value>
</var>
</field>
ApplicationResources.properties
title.login = Login Page
item.submit = Submit
error.name.required=A UserName is Required
error.psw.required=A Password is Required
error.nickname.required=A Nickname is Required
label.username=userName
label.password=password
label.nickname=nickname
error.required=0 can not be null.
error.minlength=0 can not less than 1 char.
error.maxlength=0 can not be greater than 1 characters.
error.invalid=0 is invalid.
validator-rules.xml
<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionErrors,
javax.servlet.http.HttpServletRequest"
msg="errors.required">
先谢谢各位帮忙~~如果成功解答可以加分~~希望留下QQ~~以便进一步解决
别说上网查啊~~我都查好几天了~~所有的跟我写的都一样~~可是我这还是不行!
请明白人留下QQ~~
就这块块
<action path="/helloWord" type="action.HelloWordAction" parameter="method" name="helloForm" validate="true" input="/index.jsp">
<forward name="hello" path="/pages/hello.jsp"/>
</action>
validate="true"这个是设置验证的,如果不设置无效,默认是不做验证的.
参考资料:null
参考技术A struts-config.xml中<form-bean
name="logonForm"
type="org.apache.struts.action.DynaActionForm">
<form-property name="userName" type="java.lang.String" />
<form-property name="password" type="java.lang.String" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/org/apache/struts/validator/validator-rules.xml,
/WEB-INF/validation.xml"/>
<set-property property="stopOnFirstError" value="true"/>
</plug-in>
不需要另外写validator-rules.xml
我和你说的这种是动态的标单验证,就是不用写form
如果你想用继承的方法,那么把你的UserLoginForm念上来看看
首先,你先要继承extends ValidatorForm或者Dynaextends ValidatorForm,然后实现validate方法
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
ServletContext application=getServlet().getServletContext();
ActionErrors errors=new ActionErrors();
String validationKey=this.getValidationKey(mapping, request);
Validator validator=Resources.initValidator(validationKey, this, application, request, errors, page);
try
validatorResults=validator.validate();
catch(Exception e)
e.printStackTrace();
return errors;
参考技术B 一般都不用这个验证框架的 参考技术C <form-bean name="userLoginForm" type="com.yourcompany.struts.validator.DynaValidatorForm.UserLoginForm" >
你的Form也是这个包?com.yourcompany??
如果不是把这里改一下。type的值改成你的类路径 参考技术D DynaValidatorForm.java中的validate()方法去掉
<action validate="true"> 第5个回答 2008-08-22 validation.xml 可能书写有错误,看看
<form-validation>
<formset>
<form name="">
<field>
</field>
</form>
</formset>
</form-validation>
看看这些都有没有
struts2_validate表单验证
使用代码实现 验证功能 (也就是重写ActionSupport中的validate()方法) 在validate方法中进行编写我们需要的验证功能 这里需要提几点的就是:
1.当我们需要对action中的某一个指定的方法使用validate()方法验证时我们需要自定义一个validate
2.当我们使用自定义的validate方法时,最好将重写的ActionSupport的validate方法去掉 (这是为了避免
引起冲突,因为如果action类中存在重写的validate()方法 程序会自动调用我们自定义的validate方法 之
后再调用它 这样就验证了多次,非常不利于程序的效率。而且容易出现冲突)
3.在创建自定义的validate方法时需要注意该方法的 方法名! 该方法名由 validate+对应的表单提交的
action中的 执行方法名称(首字母大写)
validateXXX或者validate方法在执行execute()方法之前执行,如果不能通过验证会返回struts.xml中相应action中<result name="input">xxxxxxx</result>的页面。
在validate函数中可以是指错误信息:
public void validateLogin() { //用户名不能为空 System.out.println("validatelogin!"); if("".equals(s.getUsername().trim())){ this.addFieldError("usernameError", "用户名不能为空"); } if("".equals(s.getPassword().trim())){ this.addFieldError("passwordError", "密码不能为空"); }else if(s.getPassword().length()<6){ this.addFieldError("passwordError", "密码长度不少于6位"); } }
在返回的页面中可以显示:
<div> <s:fielderror/> </div>
以上是关于struts中validation验证无效的主要内容,如果未能解决你的问题,请参考以下文章