Struts2 验证框架

说起来有些小郁闷.<<程序天下-struts2技术详解>> 这本书主要是针对 Struts2.0  来讲的.但自己用的是 Struts2.1.6  所以在学的时候和书上有很多的出入.自己英语水平还不到能顺利看懂 英文文档的水平.  有些问题得不到解决.网上找了一下,也没有什么收获.郁闷!Struts2.1 在 Ajax 方面比 Struts2.0 改动了许多,暂时先不管了.

本来打算来一次地毯式的"扫荡"  不能如愿.

http://noknower.iteye.com/blog/274100

 

这里基础详细的讲了一些常用的.这就跟着补充一下吧.

在Action 里进行验证

// /**
	// * validate 进行全局验证
	// */
	// @Override
	// public void validate() {
	// if (null == userAge || userAge > 0) {
	// // 记录错误 addFieldError(属性名 , 提示信息);
	// addFieldError("userAge", "userAge 必须大于0.");
	// }
	// }

	// /**
	// * 针对 testAction 进行验证 validateXxxx 进行设置
	// */
	// public void validateTestAction() {
	// if (null == userAge || userAge > 0) {
	// // 记录错误 addFieldError(属性名 , 提示信息);
	// addFieldError("userAge", "userAge 必须大于0.");
	// }
	//	}

 要说的是在这里涉及到类型转换. 书上说 最好让类型转换人有优先于验证.想想些道理.这里关于类型转换就不多说了.

 

 

TestAction-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="userName">
		<field-validator type="stringlength">
			<param name="minLength">4</param>
			<param name="maxLength">14</param>
			<message>
				xml userName 长度在${minLength} 和 ${maxLength} 之间.
			</message>
		</field-validator>
		<!-- short-circuit="true"  设置短路校验  -->
		<field-validator type="requiredstring" short-circuit="true">
			<message>xml userName不能为空.</message>
		</field-validator>
		<!-- 正则校验
			<field-validator type="regex">
			<param name="expression"><![CDATA[(\w{4,25})]]></param>
			<message key="name.regex"/>
			</field-validator>
		-->
	</field>
</validators>

它的命名是经 Xxxx--validation.xml 形式来的.

 

 

sx:datetimepicker

这和Struts2.0 有不同  引入struts2-dojo-plugin-2.1.8.jar  之后

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%> <html>
	<head>
                <s:head theme="xhtml" />
		<sx:head parseContent="true" extraLocales="en_us" /> </head>
	<body>
		最好先进行类型转换再进行数据校验
		<s:form action="testAction" method="post" >
			<sx:datetimepicker name="userDate" displayFormat="yyyy-MM-dd"
				language="en_us" label="userDate" value="userDate" />
                        <s:submit />
		</s:form>
	</body>
</html>

 Ajax  验证 这块没有成功.在网上也没有找到好的解决方案 只能这样了.  附件里是 demo .

 

使用客户端校验是个很好的办法,但要注意:TestAction-validation.xml 资源中的消息在JSP不调用Action是不能使用的,只有先调用Action,该页面对应的校验配置文件.

在这里就是说要通过 Action(http://localhost:8088/TestStruts2Validate/testAction.action) 到达 index.jsp 页面时才可以在 s:form 中 使用 validate="true" 否则会出错.

 

 

Struts2.1 把Ajax 移动到 dojo 中.在使用过程中问题多多.但书本大多是以 Struts2.0 来讲的.

你可能感兴趣的:(框架,Ajax,xml,struts,dojo)