Struts中的Date validator检查一个指定的日期是否在指定的范围,如果值不在指定的范围内,它将生成错误信息.
错误信息由<message></message>标签提供.下面的例子将向大家演示如何使用date validator来检查输入范围.
[注意 : 如果没有指定date converter,那么XworkBasicConverter将会参与来进行日期转换,默认使用Date.SHORT格式(使用编程式指定的locale,否则回退到系统默认的locale)]
按照下面的步骤创建日期范围验证器 :
第一步 : 创建struts.xml文件,并添加如下xml代码 :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- Rose India Struts 2 Tutorials -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="roseindia" namespace="/roseindia" extends="struts-default">
<!-- Add actions here -->
<!-- date validation -->
<action name="dateValidation">
<result>/pages/dateInputForm.jsp</result>
</action>
<action name="dateValidation1" class="net.roseindia.DateVaLidationAction">
<result name="input">/pages/dateInputForm.jsp</result>
<result name="error">/pages/dateInputForm.jsp</result>
<result>/pages/dateSuccess.jsp</result>
</action>
<!-- Add actions here -->
</package>
<!-- Add packages here -->
</struts>
第二步 : 创建输入表单,也就是dateInputForm.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Input form</title>
<link href="<s:url value="/css/main.css"/>" rel="stylesheet"
type="text/css"/>
<s:head/>
</head>
<body>
<s:form method="POST" action="dateValidation1">
</td>
</tr>
<s:textfield label="Enter Joining Date of Employee" name="joiningdate"/>
<s:submit />
</s:form>
</body>
</html>
第三步 : 创建一个Action类
package net.roseindia; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.*; import java.util.*; import java.text.*; public class DateVaLidationAction extends ActionSupport implements Validateable { private Date joiningdate=null; public void setJoiningdate(Date joiningdate){ this.joiningdate = joiningdate; } public Date getJoiningdate(){ return joiningdate; } }
第四步 : 在一个xml文件中创建Date validator
验证文件的格式是<ActionClassName>-validation.xml或<ActionClassName>-<ActionAliasName>-validation.xml.
日期验证器 : 该验证器检查指定的日期是否在指定的范围内,如果日期是合法的且在指定的范围内,你将跳转到dateSuccess.jsp页面去,否则它将显示xml文件中指定的信息(例如:指定的日期必须在01/01/1990和01/01/2000之间).日期验证器有如下参数 :
l fieldName : 验证器的字段名.如果使用Plain Validator语法它将是必填项.
l min : 日期的最小范围,如果未指定,它将不会检查
l max : 日期的最大范围,如果未指定,它将不会检查
DateVaLidationAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="joiningdate"> <field-validator type="date"> <param name="min">01/01/1990</param> <param name="max">01/01/2000</param> <message>Joining date must be supplied between ${min} and ${max}</message> </field-validator> </field> </validators>
如果任何用户在text字段输入的任何日期都是有效的,那么dateSuccess.jsp页面将显示如下 :
"Employee Joining Date: 12/11/1998 " message.
dateSuccess.jsp
<%@page language="java" %> <html> <head> <title>Correct entry</title> </head> <body> <b>Employee Joining Date: </b><%=request.getParameter("joiningdate") %> </body> </html>
输出 :
当程序执行时,将会得到下面的页面 :
如果你输入错误的日期或文本你将会得到 :
如果你输入的日期在指定的范围以下 :
如果你输入的日期超出了指定的范围 :
如果你输入范围以内的日期 :
那么你将得到如下输出信息 :
3 楼 yangwei1030 2009-10-15 15:47
2 楼 yangwei1030 2009-10-15 15:45
1 楼 yangqianyu222 2009-06-10 11:55
我在action 中 的类型是 java.util.Date ,怎么getter 之后却变成了String?