Class DynaValidatorForm
来源:互联网 发布:介绍一种网络新技术 编辑:程序博客网 时间:2024/05/16 15:38
1. Create DynaActionForm
There are 2 ways to create a dynaActionForm in Lomboz3.2. The first one is to use New -> Struts Form Bean -> Add New DynaForm -> Fill out Form Bean Name and add properties (Notice that in Lomboz3.2 there is a bug that when you add more than one properties, it will ONLY add the last one, so we have to add the other properties in struts-config.xml by hand.), check out Create Form Input Page and select Action. Another way to create a dynaActionForm is add code directly in struts-config.xml. This is because a dynaActionForm has no .java file. Code is like this:
<form-property name="username" type="java.lang.String"/>
<form-property name="password" type="java.lang.String"/>
</form-bean>
2. Create Action
Code in an action is most like that in a ordinary action file. The only diffience is the way to retrieve properties form the dynaActionForm.
The methods to get and set properties of a dynaActionForm are:
3. Add ValidatorPlugin into struts-config.xml
...
<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="false" />
</plug-in>
</struts-config>
4. Create validation.xml and validator-rules.xml in folder WEB-INF
Creating validation.xml is a little complex, please refer to the example below. But when we create a struts project in lomboz3.2, it has create these two files atuomaticially. We need not to modify anthing about validator-rules.xml and only need to modify validation.xml to fit our purpose.
5. Add content in ApplicationResources.properties.
First we need to confirm that in struts-config.xml we have use ApplicationResources.properties as resource file.
Add needed resouce in ApplicationResources.properties:
label.username = username
label.password = password
#Error
errors.required={0} can not be null
errors.minlength={0} can not be less than {1} char
errors.maxlength={0} can not be greater than {1} char
errors.invalid={0} is invalid<li/>
6. Use Action in .jsp files.
There are two ways to report validation errors in .jsp files. The first way is to report errors in the .jsp files, and the other is to report using javascript. The first way is simple, add
where you want the errors to show such below the tag <body>. To use javascript we need to add
in the tag <html:form>(Notice that the method name is validate + form name = validateLoginActionForm), and we need to add
between <html:form> and </html:form>.
A example:
1. Create DynaActionForm.
--------------------------------------------------------------
struts.config.xml
<form-bean name="loginActionForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="username" type="java.lang.String"/>
<form-property name="password" type="java.lang.String"/>
</form-bean>
<!-- ... -->
</form-beans>
2. Create Action
-------------------------------------------------
loginAction.java
--------------------
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.*;
import org.apache.struts.validator.*;
public class loginAction extends Action ...{
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException ...{
//TODO: cannot downcast
DynaValidatorForm loginForm = (DynaValidatorForm)form;
String username = (String)loginForm.get("username");
String password = (String)loginForm.get("password");
HttpSession session = request.getSession(true);
session.removeAttribute("username");
session.setAttribute("username", username);
ArrayList al = new ArrayList();
al.add(username);
al.add(password);
String prompt;
loginHandler login = new loginHandler();
if(login.checkLogin(al))...{
prompt = "Success";
} else ...{
prompt = "Fail";
}
return mapping.findForward(prompt);
}
}
----------
3. Add ValidatorPlugin into struts-config.xml
struts-config.xml
--------------
<!-- ... -->
<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="false" />
</plug-in>
</struts-config>
4. Create validation.xml and validator-rules.xml in folder WEB-INF
validation.xml
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<formset>
<form name="loginActionForm">
<field property="username" depends="required,minlength">
<arg key="label.username" />
<arg key="${var:minlength}" resource="false"
position="1" />
<var>
<var-name>minlength</var-name>
<var-value>3</var-value>
</var>
</field>
<field property="password" depends="required,minlength">
<arg key="label.password" />
<arg key="${var:minlength}" resource="false"
position="1" />
<var>
<var-name>minlength</var-name>
<var-value>3</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
-----------------------------------
validtor-rules.xml
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<!--
$Id: validator-rules.xml,v 1.1 2006/07/21 12:40:26 nacid Exp $
This file contains the default Struts Validator pluggable validator
definitions. It should be placed somewhere under /WEB-INF and
referenced in the struts-config.xml under the plug-in element
for the ValidatorPlugIn.
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
These are the default error messages associated with
each validator defined in this file. They should be
added to your projects ApplicationResources.properties
file or you can associate new ones by modifying the
pluggable validators msg attributes in this file.
# Struts Validator Error Messages
errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} is invalid.
errors.byte={0} must be a byte.
errors.short={0} must be a short.
errors.integer={0} must be an integer.
errors.long={0} must be a long.
errors.float={0} must be a float.
errors.double={0} must be a double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is an invalid credit card number.
errors.email={0} is an invalid e-mail address.
Note: Starting in Struts 1.2.0 the default javascript definitions have
been consolidated to commons-validator. The default can be overridden
by supplying a <javascript> element with a CDATA section, just as
in struts 1.1.
-->
<form-validation>
<global>
<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.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>
<validator name="requiredif"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequiredIf"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>
<validator name="validwhen"
msg="errors.required"
classname="org.apache.struts.validator.validwhen.ValidWhen"
method="validateValidWhen"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"/>
<validator name="minlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMinLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.minlength"
jsFunction="org.apache.commons.validator.javascript.validateMinLength"/>
<validator name="maxlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMaxLength"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.maxlength"
jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>
<validator name="mask"
classname="org.apache.struts.validator.FieldChecks"
method="validateMask"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.invalid"/>
<validator name="byte"
classname="org.apache.struts.validator.FieldChecks"
method="validateByte"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.byte"
jsFunctionName="ByteValidations"/>
<validator name="short"
classname="org.apache.struts.validator.FieldChecks"
method="validateShort"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.short"
jsFunctionName="ShortValidations"/>
<validator name="integer"
classname="org.apache.struts.validator.FieldChecks"
method="validateInteger"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.integer"
jsFunctionName="IntegerValidations"/>
<validator name="long"
classname="org.apache.struts.validator.FieldChecks"
method="validateLong"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.long"/>
<validator name="float"
classname="org.apache.struts.validator.FieldChecks"
method="validateFloat"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.float"
jsFunctionName="FloatValidations"/>
<validator name="double"
classname="org.apache.struts.validator.FieldChecks"
method="validateDouble"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.double"/>
<validator name="date"
classname="org.apache.struts.validator.FieldChecks"
method="validateDate"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.date"
jsFunctionName="DateValidations"/>
<validator name="intRange"
classname="org.apache.struts.validator.FieldChecks"
method="validateIntRange"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends="integer"
msg="errors.range"/>
<validator name="floatRange"
classname="org.apache.struts.validator.FieldChecks"
method="validateFloatRange"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends="float"
msg="errors.range"/>
<validator name="doubleRange"
classname="org.apache.struts.validator.FieldChecks"
method="validateDoubleRange"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends="double"
msg="errors.range"/>
<validator name="creditCard"
classname="org.apache.struts.validator.FieldChecks"
method="validateCreditCard"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.creditcard"/>
<validator name="email"
classname="org.apache.struts.validator.FieldChecks"
method="validateEmail"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.email"/>
<validator name="url"
classname="org.apache.struts.validator.FieldChecks"
method="validateUrl"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
depends=""
msg="errors.url"/>
<!--
This simply allows struts to include the validateUtilities into a page, it should
not be used as a validation rule.
-->
<validator name="includeJavaScriptUtilities"
classname=""
method=""
methodParams=""
depends=""
msg=""
jsFunction="org.apache.commons.validator.javascript.validateUtilities"/>
</global>
</form-validation>
--------------------------
5. Add content in ApplicationResources.properties.
ApplicationResources.properties.
----------------------------
label.username = username
label.password = password
#Error
errors.required={0} can not be null
errors.minlength={0} can not be less than {1} char
errors.maxlength={0} can not be greater than {1} char
errors.invalid={0} is invalid
6. Use Action in .jsp files.
login.jsp
<%...@ page contentType="text/html; charset=gb2312"%>
<html:html>
<head>
<title>Login Page</title>
</head>
<body>
<!-- Use text to report validtor error -->
<font color="red"><html:errors /></font>
<html:form action="/loginAction" method="post"
onsubmit="return validateLoginActionForm(this)">
Username: <html:text property="username" size="15" />
<br />
<br />
Password: <html:password property="password" size="15" />
<br />
<br />
<html:submit property="submit" value="login" />
<!-- Use javascript to report validtor error -->
<html:javascript formName="loginActionForm" />
</html:form>
</body>
</html:html>
- Class DynaValidatorForm
- DynaValidatorForm 赋值
- DynaValidatorForm类
- DynaValidatorForm类
- DynaValidatorForm验证
- DynaValidatorForm类
- Exception creating bean of class org.apache.struts.validator.DynaValidatorForm: {1}
- struts DynaValidatorForm 赋值
- 动态验证DynaValidatorForm的使用
- DynaValidatorForm类和DynaActionForm类
- struts1的DynaValidatorForm验证框架实例
- Validator框架中的ValidatorForm和DynaValidatorForm使用区别
- class
- class
- class
- class
- class
- class
- 最基本的数据库连接方式:
- Java之static学习
- netbean的使用
- 1.CSS布局常用的方法:
- 原创玄幻小说--那时花开--前部完之小结
- Class DynaValidatorForm
- 学习管理!!中国历史上最经典的7个智慧案例
- 探讨System.Net.Mail命名空间中的类
- 最近拿到一本好书The Old New Thing!
- .NET Romoting 学习总结(一)——Remoting技术之激活模式全接触
- MuxRenderer 的实现
- MySQL与Access之语法区别
- VB写日志类
- .NET Romoting 学习总结(二)—— Remoting技术之远程调用三步走