用户唯一性的校验,要确定用户校验的时机。要在用户添加或者修改完之后,立刻发送ajax请求,校验。
用户校验分两种情况,一种是新添加用户,直接判断是否存在该用户名即可。
二种是编辑用户,首先用户是存在的,在校验的时候,要排除自己然后校验。
用到的hql语句:
public List<User> verify(String account, String id) {
String sb = "FROM User WHERE account = ?";
if (StringUtils.isNotBlank(id)) {
sb += " and id != ?";
}
Query query = getSession().createQuery(sb);
query.setParameter(0, account);
if (StringUtils.isNotBlank(id)) {
query.setParameter(1, id);
}
//query.list();//查询
return query.list();
}
使用ajax校验
var falgs = false;
function doVerify(){
//1.获取账号值
var account = $("#account").val();
//
if(account != ""){
//2.使用ajax获取
$.ajax({
url:"${basePath}nsfw/user_verify.action",
type:"post",
async:false,//同步获取 根据需求
data:{"user.account":account,"user.id":"${user.id}"},//EL表达式要放在双引号内,,,,注意
success:function(msg){
//alert(msg);
if("true" != msg){
falgs = true;//这个是没重复的
}else{
alert("账号已经存在,请重新输入别的账号");
$("#account").focus();
falgs = false;
}
}
});
/* $.ajax({
url:"${basePath}nsfw/user_verifyAccount.action",
data: {"user.account": account},
type: "post",
async: false,//非异步
success: function(msg){
if("true" != msg){
//帐号已经存在
alert("帐号已经存在。请使用其它帐号!");
//定焦
$("#account").focus();
vResult = false;
} else {
vResult = true;
}
}
}); */
}
}
function doSubmit(){
//判断是否为空
var name = $("#name").val();
if(name == ""){
alert("请输入姓名");
$("#name").focus();
return false;
}
var account = $("#account").val();
if(account == ""){
alert("请输入账号");
$("#account").focus();
return false;
}
var passwd = $("#passwd").val();
if(passwd == ""){
alert("请输入密码");
$("#passwd").focus();
return false;
}
doVerify();
if(falgs){
document.forms[0].submit();
}
}
</script>
public void verify(){
//查询用户是否存在
try {
String msg = "false";
List<User> verify = userService.verify(user.getAccount(),user.getId());
if(verify.size()>0 && verify != null){
msg = "true";//有重复deweitrue
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html");
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(msg.getBytes());
outputStream.flush();
outputStream.close();
}
//输出
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}