Struts2的Double验证器检查给定的输入是否为double 的.如果输入不是double的,它生成错误信息.Double验证器同样可以用来检查输入范围.本例用来演示如何使用Double验证器来检查输入范围.
按照下面的步骤创建double范围验证器的例子 :
第一步 : 创建struts.xml文件并添加下面的xml代码到struts.xml文件中
struts.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 -->
<!-- double validation -->
<action name="doubleValidation" class="net.roseindia.DoubleVaLidationAction">
<result name="input">/pages/doubleInputForm.jsp</result>
<result name="error">/pages/doubleInputForm.jsp</result>
<result>/pages/doubleSuccess.jsp</result>
</action>
<!-- Add actions here -->
</package>
<!-- Add packages here -->
</struts>
第二步 : 创建输入表单
doubleInputForm.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="doubleValidation"> </td> </tr> <s:textfield label="Enter Total Percentage Marks" name="percentagemarks" maxlength="10" /> <s:submit /> </s:form> </body> </html>
第三步 : 创建Action类
DoubleVaLidationAction.java
package net.roseindia; import com.opensymphony.xwork2.ActionSupport; public class DoubleVaLidationAction extends ActionSupport{ private double percentagemarks; public String execute() throws Exception{ return SUCCESS; /*/*if (getPercentagemarks() > 20.1 && getPercentagemarks() < 50.1){ return SUCCESS; } else{ return ERROR; } */ } public void setPercentagemarks(double percentagemarks){ this.percentagemarks = percentagemarks; } public double getPercentagemarks(){ return percentagemarks; } }
第四步 : 创建验证器
验证器文件的格式应该是<ActionClassName>-validation.xml或者<ActionClassName>-<ActionAliasName>-validation.xml.
Double验证器 : 该字段验证器检查输入的数字是不是double的且是否在指定的范围内.如果你输入了在指定的范围内的有效的值,你将跳转到doubleSuccess.jsp页面.否则它将显示xml中指定的错误信息(Percentage marks need to between 20.1 and 50.1).Double验证器有如下参数 :
l fieldName : 这是验证器要验证的字段名.如果使用int-Validator语法将是必填的,否则不是必填项.
l minInclusive : 由Java语言指定的FloatValue形式的最小包括值.(如果什么都未指定,它将不会检查)
l maxInclusive : 由Java语言指定的FloatValue形式的最大包括值.(如果什么都未指定, 它将不会检查)
l minExclusive : 由Java语言指定的FloatValue形式的最小非包括值.(如果什么都未指定, 它将不会检查)
l maxExclusive : 由Java语言指定的FloatValue形式的最大非包括值.(如果什么都未指定, 它将不会检查)
DoubleVaLidationAction-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="percentagemarks">
<field-validator type="double">
<param name="minInclusive">20.1</param>
<param name="maxInclusive">50.1</param>
<message>Percentage marks need to between
${minInclusive} and ${maxInclusive}</message>
</field-validator>
</field>
</validators>
当输入任何在指定范围内的double值,你一定会跳转到doubleSuccess.jsp页面,并显示你输入的值和"Aggregate Total Marks: "信息.
stringSuccess.jsp
<%@page language="java" %> <html> <head> <title>Correct entry</title> </head> <body> <b>Aggregate Total Marks: </b><%=request.getParameter("percentagemarks") %>% </body> </html>
输出 :
当程序执行时,你将看到如下 :
如果你输入错误的数据或文本你将得到 :
当你输入数字'26.105' :