码迷,mamicode.com
首页 > Web开发 > 详细

008 基于ajax的密码修改 - bos

时间:2017-08-16 19:17:07      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:trace   orm   var   void   ons   响应   read   .exe   添加   


一、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

标签:trace   orm   var   void   ons   响应   read   .exe   添加   

原文地址:http://www.cnblogs.com/tommychok/p/7374965.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!