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> <package name="StrutsRE" extends="struts-default"> <action name="ActionVld" class="org.strutRE.action.ActionVld"> <result>index.jsp</result> <result name="input">/actionVld.jsp</result> </action> <action name="ActionVldV" class="org.strutRE.action.ActionVldV"> <result>index.jsp</result> <result name="input">/actionVldV.jsp</result> </action> </package> </struts>
ActionVld-validation.xml ActionVld的验证配置
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.02//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="user"><!-- user-要验证的类 --> <field-validator type="visitor"><!-- visitor就是用来验证的 --> <message>∵</message><!-- 错误提示,∵符号没有特别意思- -# --> </field-validator> </field> </validators>
org.strutRE.model.User.java
package org.strutRE.model;
import java.io.Serializable;
/**
* Jul 4, 2008
*
* @author ipinko@msn.com
*
*/
@SuppressWarnings("serial")
public class User implements Serializable {
private String name;
private int age;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name
* the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age
* the age to set
*/
public void setAge(int age) {
this.age = age;
}
}
User-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.02//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="name"> <field-validator type="requiredstring"> <message key="empty" /> </field-validator> </field> <field name="age"> <field-validator type="int"> <message key="int" /> </field-validator> <field-validator type="conversion"><!-- 转换出错提示 --> <message>请输入整数!/n</message> </field-validator> </field> </validators>
actionVld.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>actionVld.jsp</title>
</head>
<body>
<br>
<s:form action="ActionVld" theme="simple">
<s:textfield name="user.name" label="name" />
<s:textfield name="user.age" label="age" />
<s:fielderror />
<s:submit />
</s:form>
</body>
</html>
讲解一下,上面的ActionVld-validation.xml验证的是action里面那个类,action名-validation.xml是默认的action验证配置文件名.User-validation.xml验证的是User类里的属性,类名-validation.xml是默认的类验证配置文件名.
而下面是除了默认的User-validation.xml外再加其他的User验证,User-context值-validation.xml是默认的配置文件名.
org.strutRE.action.ActionVldV.java跟org.strutRE.action.ActionVld.java一样
ActionVldV-validation.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.02//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="user"> <field-validator type="visitor"> <param name="context">v</param><!- v是除了默认之外的验证 -> <message>∵</message> </field-validator> </field> </validators>
加1个User-v-validation.xml , 其实只要这个User-v-validation.xml不要User-validation.xml也可以的.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.02//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="age"> <field-validator type="int"> <param name="min">18</param> <message key="ateen" /> </field-validator> </field> </validators>
最后的actionVldV.jsp,刚才的actionVld.jsp用的是theme="simple"加<s:fielderror />,这个是用AJAX的.
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
<html>
<head>
<title>actionVld.jsp</title>
<sx:head />
</head>
<body>
<br>
<s:form action="ActionVldV" theme="xhtml">
<s:textfield name="user.name" label="name" />
<s:textfield name="user.age" label="age" />
<sx:submit validate="true" />
</s:form>
</body>
</html>
最后说一下资源文件
action下的package_zh_CN.properties&package_en_US.properties
model下的package_zh_CN.properties&package_en_US.properties
除了invalid.fieldvalue开头的都是普通的KEY
invalid.fieldvalue开头的action包里的invalid.fieldvalue.user.name跟model包里的invalid.fieldvalue.age一样效果.都是默认出错提示.
以上发表都是本人看官方或网上资料或自己尝试验证的,如有缺陷请多多指教,谢谢.
联系方式:ipinko@msn.com或ipinko@sina.com