日期:2014-05-16  浏览次数:20537 次

Inline Form Validation Engine+Struts2的AJAX验证

新进入一家做医疗软件的企业,在开发医疗软件的过程中,项目组要求使用Inline Form Validation Engine这个验证框架。

此验证框架的最新版本为V2.2,官方网站:http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/ 。

下面所介绍的验证,是在官方版本V2.2下和matychen的帮助下完成的。在此,非常感谢matychen。

matychen博客:http://matychen.iteye.com/ 。

?

一、修改过的jquery.validationEngine-cn.js的内容(其他的文件都未做修改)

"ajaxUserCall": {
                    //这是源文件的URL
                    //"url": "ajaxValidateFieldUser",
                    //这是修改后的URL
                    "url": "validate.action",
                    // you may want to pass extra data on the ajax call
                    "extraData": "name=eric",
                    "alertText": "* 该用户名已经存在",
                    "alertTextLoad": "* 正在验证中,请稍等..."
                },

?这里的URL指的是跳转的action

二、相应的action的处理

public class ValidationAction extends ActionSupport {
	public void validate() {
		ActionContext ac = ActionContext.getContext();
		HttpServletRequest request = (HttpServletRequest) ac
				.get(ServletActionContext.HTTP_REQUEST);
		HttpServletResponse response = (HttpServletResponse) ac
				.get(ServletActionContext.HTTP_RESPONSE);
		String fieldId = request.getParameter("fieldId");
		System.out.println(fieldId);
		String fieldValue = request.getParameter("fieldValue");
		PrintWriter pw=null;
		try {
			 pw=response.getWriter();
			if (fieldValue.equals("zhangbin")) {
				pw.write(
						"[\"" + fieldId + "\"," + true + "]");
			} else
				pw.write(
						"[\"" + fieldId + "\"," + false + "]");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			pw.flush();
			pw.close();
		}
	}
}

?三、struts文件的配置

<struts>
	<package name="validate" extends="struts-default">
		<action name="validate" class="com.zhangbin.action.ValidationAction" method="validate">
		</action>
	</package>
</struts>    

?

具体的实现代码详情,请参见附件。由于本人第一次发帖,水平有限,如果有写的不好的地方请大家多多包涵。最后,再次感谢matychen的帮助。

?

?

?