008 基于ajax的密码修改 - bos
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了008 基于ajax的密码修改 - bos相关的知识,希望对你有一定的参考价值。
一、validatebos的使用
1.validatebox用于做页面的输入校验
2.提供以下校验规则:
<1>非空校验
<2>使用validType指定,可选值为email,url,length[0,100],remote[‘http://.../action.do‘, ‘paramName‘]
其中remote[‘http://.../action.do‘, ‘paramName‘]表示发送ajax请求做验证(基于ajax的服务端校验),返回"true"即成功
<3>支持自定义规则
3.要进行校验,首先为input添加一个class:easyui-validatebox
4.添加校验规则:
<1>required="true"添加非空校验
<2>data-options="validateType:‘length[4,6]‘"
5.可以在js中使用$("#formId").form("validate");对添加了规则的表单进行校验,校验通过返回true,否则返回false
二、基于ajax修改密码
1.为两个密码输入框添加非空和长度校验
<input id="txtNewPass" type="Password" class="txt01 easyui-validatebox" required="true" data-options="validateType:‘length[4,6]‘"/>
<input id="txtRePass" type="Password" class="txt01 easyui-validatebox" required="true" data-options="validateType:‘length[4,6]‘"/>
2.在input外层添加form标签,并添加id
<form id="editPasswordForm">...</form>
3.为提交按钮添加单击事件响应函数,在函数里进行表单校验、密码一致性校验、并提交请求
$("#btnEp").click(function(){
var v = $("#editPasswordForm").form("validate");
if(v){
//手动校验输入是否一致
var v1 = $("#txtNewPass").val();
var v2 = $("#txtRePass").val();
if(v1 == v2){
//输入一致,发送请求
$.ajax({
"url":"userAction_editPassword.action",
"data":{"password":v1},
"type":"post",
"success":function(resp, textStatus, xmlHttp){
console.log(resp);
if(resp=="true"){
//修改成功,关闭修改密码窗口
$("#editPwdWindow").window("close");
$.messager.alert("提示信息", "密码修改成功!", "info");
}else{
//修改失败,弹出提示
$.messager.alert("提示信息", "密码修改失败!", "error");
}
},
"error":function(xmlHttp, textStatus, exception){
alert(xmlHttp.status);
}
});
}else{
$.messager.alert("提示信息", "两次密码输入不一致!", "warning");
}
}
});
4.编写UserAction的editPassword,注意基于Ajax的返回类型要为NONE,响应直接通过out回写
public String editPassword(){
String respData = "true";
//修改当前用户的密码
User loginUser = BOSUtils.getLoginUser();
try {
userService.editPassword(loginUser.getId(), model.getPassword());
} catch (Exception e) {
respData = "false";
e.printStackTrace();
}
BOSUtils.getWriter().write(respData);
return NONE;
}
5.更改BaseDao和BaseDaoImpl,抽取更新部分列的方法
<1>BaseDao接口
/**
* 使用hbm中自定义的基于HQL的查询名称进行部分列的更新
* @param queryName
* @param objects 待更新的列的值
*/
void executeUpdate(String queryName, Object... objects);
<2>BaseDaoImpl实现类
@Override
public void executeUpdate(String queryName, Object... objects) {
Session session = this.getSessionFactory().getCurrentSession();
//根据定义的查询名称创建对应的Query对象
Query query = session.getNamedQuery(queryName);
//为HQL中的?赋值
int index = 0;
for (Object object : objects) {
query.setParameter(index++, object);
}
//执行更新
query.executeUpdate();
}
6.在User.hbm.xml中定义HQL
<query name="user.editPassword">
UPDATE User SET password = ? WHERE id = ?
</query>
7.在UserService直接调用抽取的executeUpdate方法执行密码更新
@Override
@Transactional(isolation=Isolation.REPEATABLE_READ, propagation=Propagation.REQUIRED, readOnly=false)
public void editPassword(String id, String password) {
password = MD5Utils.md5(password);
userDao.executeUpdate("user.editPassword", password, id);
}
以上是关于008 基于ajax的密码修改 - bos的主要内容,如果未能解决你的问题,请参考以下文章
BOS项目 第2天(BaseDaoBaseAction用户登录自定义strust登录拦截器)
JAVAEE——BOS物流项目03:学习计划messagermenubutton登陆拦截器信息校验和取派员添加功能
JAVAEE——BOS物流项目04:学习计划datagrid分页查询批量删除修改功能