日期:2014-05-16 浏览次数:20889 次
Struts2 框架的验证体系主要分为:
我们在 LoginDemo 中对这几种方法都会有举例:
?
Struts2 数据提交的步骤是:
?
index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%@taglib prefix="sj" uri="/struts-jquery-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<sj:head locale="zh_CN" jqueryui="true" />
<!-- AJAX 方式登录 callback 函数响应 login.js -->
<script type="text/javascript" src="js/login/login.js"></script>
<!-- 载入样式表 -->
<link rel="stylesheet" type="text/css" href="css/style.css" />
<title><s:text name="index.title" /></title>
</head>
<body>
<div id="login_div">
<form action="login-ajax/loginAjax.action" method="post" id="login_form">
<fieldset class="login-fieldset">
<legend><s:text name="form.ajax.title" /></legend>
<label for="input_username" class="login-label">
<s:text name="text.label.username" />
<span id="user_username_error" class="error-message"></span>
</label>
<span class="input-span-block">
<input type="text" id="input_username" name="user.userName" />
</span>
<label for="input_userpass" class="login-label">
<s:text name="text.label.userpass" />
<span id="user_userpass_error" class="error-message"></span>
</label>
<span class="input-span-block">
<input type="password" id="input_userpass" name="user.userPass" />
</span>
<span class="button-span-block">
<sj:submit id="login_submit"
targets="result_message"
validate="true"
validateFunction="customLoginValidate"
onBeforeTopics="clearFieldErrors"
onSuccessTopics="success"
dataType="json"
value="%{getText('button.label.loginbyajax')}" />
</span>
</fieldset>
</form>
</div>
<div id="result_message" class="error-message"></div>
</body>
</html>
?
login.js
//JSON 格式错误返回值中,KEY 中保存的是 input name的值,自定义函数进行同输出错误信息元素的映射
//本例中将 "user.userName" 转化为 "#user_username_error"
function formatErrorElementId(value) {
var elem = value.toLowerCase();
elem = elem.replace(/\./g , "_");
elem += "_error"
elem = "#"+elem;
return elem;
}
//处理 JSON 格式的 validate 失败返回值
function customLoginValidate(form , errors) {
if (errors.fieldErrors) {
$.each(errors.fieldErrors , function(key,value) {
var elem = formatErrorElementId(key);
if (elem) {
$(elem).html(value[0]);
}
});
}
}
//清除前次留下的错误信息
$.subscribe("clearFieldErrors", function() {
$("#user_username_error").html("");
$("#user_userpass_error").html("");
}