struts2 客户端验证message方法实例



struts2 客户端验证message方法实例。

又是验证功能。。。现在似乎很怕这个功能。。以前学struts1时。。其实很简单的验证模块花了我不少的时间。。现在学struts2也是一样。。花了一个下午的时间才把struts2客户端验证搞定。。
在上篇中实现了服务端验证后。。要实现客户端验证就很简单。。。只要在form元素上加上validate=true就行。。另外,我也加入了国际化支持。

先说说遇到的问题
1.在<s:form>中把action的属性写在action=”regist.action”,导致struts2没有进行客户端验证,就是提交给服务端处理了。。正确应该是action=”register”.不要加.action .. 这个问题花了我大半个下午才找出。。
2.因为懒惰把<s:textfield name=”username” label=”用户名”/>就写在<s:textfield name=”username” />没有加上label属性。。。运行时就不停地弹出Object error对话框。。。
3.短路属性short-circuit=true目录只支持服务端验证。。还不支持客户端。。。。所以不要惊讶在客户提交时同一个域出现不止一条的提示信息。

代码如下:
1.注册页面register.jsp

<%@ page contentType=”text/html; charset=GBK” language=”java” %>
<%@ taglib prefix=”s” uri=”/struts-tags”%>
<html>
<head>
<title>register</title>
</head>
<body>
<s:form action=”regist” validate=”true”>
<s:textfield name=”username” label=”用户名”/>
<s:textfield name=”pass” label=”密码”/>
<s:textfield name=”age” label=”年龄”/>
<s:textfield name=”birthday” label=”生日”/>
<s:submit/>
</s:form>
</body>
</html>
2.ReigsterAction.java
package my;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Date;
public class RegisterAction extends ActionSupport
{
private String name;
private String pass;
private int age;
private Date birthday;
public void setName(String username)
{
this.name = username;
}
public String getName()
{
return this.name;
}

public void setPass(String pass)
{
this.pass = pass;
}
public String getPass()
{
return this.pass;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return this.age;
}
public void setBirthday(Date birthday)
{
this.birthday = birthday;
}
public Date getBirthday()
{
return this.birthday;
}
public String execute()throws Exception
{
return SUCCESS;
}
}
3.验证文件(RegisterAction-validation.xml)
<?xml version=”1.0″ encoding=”GBK”?>
<!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” short-circuit=”true”>
<param name=”trim”>true</param>
<message>${getText(“username.required”)}</message>
</field-validator>
<field-validator type=”regex”>
<param name=”expression”><![CDATA[(\w{4,25})]]></param>
<message>${getText(“username.regex”)}</message>
</field-validator>
</field>


<field name=”pass”>
<field-validator type=”requiredstring” short-circuit=”true”>
<param name=”trim”>true</param>
<message>${getText(“pass.required”)}</message>
</field-validator>
<field-validator type=”regex”>
<param name=”expression”><![CDATA[(\w{4,25})]]></param>
<message>${getText(“pass.regex”)}</message>
</field-validator>
</field>
<field name=”age”>
<field-validator type=”int”>
<param name=”min”>1</param>
<param name=”max”>100</param>
<message>${getText(“age.range”)}</message>
</field-validator>
</field>
<field name=”birthday”>
<field-validator type=”date”>
<param name=”min”>1900-01-01</param>
<param name=”max”>2050-01-01</param>
<message>${getText(“birthday.range”)}</message>
</field-validator>
</field>
</validators>

4.Struts2的配置文件struts.xml
<?xml version=”1.0″ encoding=”GBK”?>
<!DOCTYPE struts PUBLIC
“-//Apache Software Foundation//DTD Struts Configuration 2.0//EN”
“http://struts.apache.org/dtds/struts-2.0.dtd”>
<struts>
<constant name=”struts.custom.i18n.resources” value=”globalMessage”/>
<package name=”my” extends=”struts-default”>
<action name=”regist” class=”my.RegisterAction”>
<result name=”success”>/show.jsp</result>
<result name=”input”>/register.jsp</result>
</action>
</package>
</struts>
5.国际化支持文件globalMessage_zh_CN.properties(用native2ascii生成的)
username.required=\u4f60\u5fc5\u987b\u8f93\u5165\u7528\u6237\u540d
username.regex=\u4f60\u8f93\u5165\u7684\u7528\u6237\u540d\u53ea\u80fd\u662f\u5b57\u6bcd\u4e0e\u6570\u5b57\uff0c\u4e14\u957f\u5ea6\u5fc5\u987b\u57284\u81f325\u4e4b\u9593
pass.required=\u4f60\u5fc5\u987b\u8f93\u5165\u5bc6\u7801
pass.regex=\u4f60\u8f93\u5165\u7684\u5bc6\u7801\u53ea\u80fd\u662f\u5b57\u6bcd\u4e0e\u6570\u5b57\uff0c\u4e14\u957f\u5ea6\u5fc5\u987b\u57284\u81f325\u4e4b\u9593
age.range=\u4f60\u7684\u5e74\u9f84\u5fc5\u987b\u5728${min}\u548c${max}\u4e4b\u9593
birthday.range=\u4f60\u7684\u751f\u65e5\u5fc5\u987b\u5728${min}\u548c${max}\u4e4b\u95f4

xwork.default.invalid.fieldvalue={0}\u5b57\u6bb5\u65e0\u6548

6.注册成功页面show.jsp
<%@ page language=”java” contentType=”text/html; charset=GBK”%>
<%@taglib prefix=”s” uri=”/struts-tags”%>

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=GBK”/>
<title>校验成功</title>
</head>
<body>
<H3>校验成功</H3>
用户名:<s:property value=”username”/><br>
密码:<s:property value=”pass”/><br>
年龄:<s:property value=”age”/><br>
生日:<s:property value=”birthday”/><br>
</body>
</html>

http://www.blogjava.net/flying/archive/2008/10/07/232959.html?opt=admin