008 基於ajax的密碼修改 - bos

來源:互聯網
上載者:User

標籤: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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.