用struts2验证日期是出错,
我的代码是
index.jsp<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>longin</title>
</head>
<body>
<h3>用户注册</h3>
<s:form action="LoginAction" validate="true">
<s:textfield name="username" label ="username:" />
<s:textfield name="psd" label="psd: "/>
<s:textfield name="age" label="age: "/>
<s:textfield name="date" label="date: "/>
<s:submit />
</s:form>
</body>
</html>LoginAction.javapackage tutorial;import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {
private String username;
private String psd;
private int age;
private Date date;
public String getusername() {
return username;
}
public void setusername(String username) {
this.username = username;
}
public String getpsd() {
return psd;
}
public void setpsd(String psd) {
this.psd = psd;
}
public int getage() {
return age;
}
public void setage(int age) {
this.age = age;
}
public Date getdate() {
System.out.println("..................getdate="+date);
return date;
}
public void setdate(Date date) {
System.out.println(".................setdate="+date);
this.date = date;
}
public String execute() throws Exception {
System.out.println("servlet..............");
return SUCCESS;
}
}
LoginAction.java<?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="username">
<field-validator type="requiredstring">
<message>name is required</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">3</param>
<param name="maxLength">10</param>
<message>userName should be between 3 and 10</message>
</field-validator>
</field>
<field name="psd">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>password is required</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">5</param>
<param name="maxLength">16</param>
<message>password should be between 5 and 16</message>
</field-validator>
</field>
<field name="age">
<field-validator type="required">
<message>age is required</message>
</field-validator>
<field-validator type="int">
<param name="min">20</param>
<param name="max">100</param>
<message>age should be between 20 and 100</message>
</field-validator>
</field>
</validators>
递交页面的时候,地址栏跳转到http://localhost:8080/validtest2/LoginAction.action,但是tomcat中不报错。
ie中显示验证错误信息的地方,显示Invalid field value for field "date".
如果把loginAction.java中改为private String date则可以提交成功,但是loginAction-validation.xml中date的验证就做不了。
这里loginAction-validation.xml我没有加下面这个date型的验证,好像加不加结果都一样, <field name="date">
<field-validator type="required">
<message>date is required</message>
</field-validator>
<field-validator type="date">
<param name="min">2008-8-1</param>
<param name="max">2008-8-19</param>
<message>The date must be between 2008-8-1 and 2008-8-19.</message>
</field-validator>
</field>这是什么问题?怎样解决?
我的代码是
index.jsp<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>longin</title>
</head>
<body>
<h3>用户注册</h3>
<s:form action="LoginAction" validate="true">
<s:textfield name="username" label ="username:" />
<s:textfield name="psd" label="psd: "/>
<s:textfield name="age" label="age: "/>
<s:textfield name="date" label="date: "/>
<s:submit />
</s:form>
</body>
</html>LoginAction.javapackage tutorial;import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {
private String username;
private String psd;
private int age;
private Date date;
public String getusername() {
return username;
}
public void setusername(String username) {
this.username = username;
}
public String getpsd() {
return psd;
}
public void setpsd(String psd) {
this.psd = psd;
}
public int getage() {
return age;
}
public void setage(int age) {
this.age = age;
}
public Date getdate() {
System.out.println("..................getdate="+date);
return date;
}
public void setdate(Date date) {
System.out.println(".................setdate="+date);
this.date = date;
}
public String execute() throws Exception {
System.out.println("servlet..............");
return SUCCESS;
}
}
LoginAction.java<?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="username">
<field-validator type="requiredstring">
<message>name is required</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">3</param>
<param name="maxLength">10</param>
<message>userName should be between 3 and 10</message>
</field-validator>
</field>
<field name="psd">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>password is required</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">5</param>
<param name="maxLength">16</param>
<message>password should be between 5 and 16</message>
</field-validator>
</field>
<field name="age">
<field-validator type="required">
<message>age is required</message>
</field-validator>
<field-validator type="int">
<param name="min">20</param>
<param name="max">100</param>
<message>age should be between 20 and 100</message>
</field-validator>
</field>
</validators>
递交页面的时候,地址栏跳转到http://localhost:8080/validtest2/LoginAction.action,但是tomcat中不报错。
ie中显示验证错误信息的地方,显示Invalid field value for field "date".
如果把loginAction.java中改为private String date则可以提交成功,但是loginAction-validation.xml中date的验证就做不了。
这里loginAction-validation.xml我没有加下面这个date型的验证,好像加不加结果都一样, <field name="date">
<field-validator type="required">
<message>date is required</message>
</field-validator>
<field-validator type="date">
<param name="min">2008-8-1</param>
<param name="max">2008-8-19</param>
<message>The date must be between 2008-8-1 and 2008-8-19.</message>
</field-validator>
</field>这是什么问题?怎样解决?
<param name="max">2008-8-19</param>
说明在客户端在发起请求后,于类型转换环节中中出错了,建议你查看类型转换的环节。
表单提交==》类型转换==》赋值给XxxxAction属性==》验证环节==》后面的环节省略了。