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>