1. 为密码输入框进行输入校验,使用easyUI提供的easyui-validatebox
<table cellpadding=3> <tr> <td>新密码:</td> <td><input id="txtNewPass" type="Password" class="txt01 easyui-validatebox" required="true" data-options="validType:'length[4,8]'" />
</td> </tr> <tr> <td>确认密码:</td> <td><input id="txtRePass" type="Password" class="txt01 easyui-validatebox" required="true" data-options="validType:'length[4,8]'"/>
</td> </tr> </table> </div> <div region="south" border="false" style="text-align: right; height: 30px; line-height: 30px;"> <a id="btnEp" class="easyui-linkbutton" icon="icon-ok" href="javascript:void(0)" >确定</a> <a id="btnCancel" class="easyui-linkbutton" icon="icon-cancel" href="javascript:void(0)">取消</a> </div> </div>
2. 为“确定”按钮绑定事件
<script type="text/javascript"> //为“确定”按钮绑定事件 $("#btnEp").click(function(){ //进行表单校验 var v = $("#editPasswordForm").form("validate");//对应表单中的所有输入框进行校验 if(v){//表单校验通过 //判断两次输入是否一致 var v1 = $("#txtNewPass").val(); var v2 = $("#txtRePass").val(); if(v1 == v2){ //输入一致,发送ajax请求,修改当前用户的密码 var url = "${pageContext.request.contextPath}/userAction_editPassword.action"; $.post(url,{"password":v1},function(data){ if(data == '1'){ //修改密码成功 $.messager.alert("提示信息","密码修改成功!","info"); }else{ //修改失败 $.messager.alert("提示信息","密码修改失败!","warning"); } //关闭修改密码的窗口 $("#editPwdWindow").window("close"); }); }else{ //输入不一致,提示用户输入不一致 $.messager.alert("提示信息","两次输入密码不一致!","warning"); } } }); </script>
3. 在UserAction中提供editPassword方法,修改密码
/** * 修改当前登录用户密码 * @throws IOException */ public String editPassword() throws IOException{ User user = (User) ServletActionContext.getRequest().getSession().getAttribute("loginUser"); String password = model.getPassword();//新密码 password = MD5Utils.md5(password); String flag = "1"; try{ userService.editPassword(password,user.getId()); }catch (Exception e) { //修改密码失败 flag = "0"; } ServletActionContext.getResponse().setContentType("text/html;charset=UTF-8"); ServletActionContext.getResponse().getWriter().print(flag); return NONE; }
4. 在BaseDao中扩展一个通用的更新方法
/** * 通用更新方法 */ public void executeUpdate(String queryName, Object... objects) { Session session = this.getSession();// 从本地线程中获得session对象 // 使用命名查询语句获得一个查询对象 Query query = session.getNamedQuery(queryName); // 为HQL语句中的?赋值 int i = 0; for (Object arg : objects) { query.setParameter(i++, arg); } query.executeUpdate();// 执行更新 }
5. 在User.hbm.xml中定义一个HQL语句,用于修改密码
<query name="editPassword"> UPDATE User SET password=? WHERE id=? </query>