使用者管理的設計--4.jquery的ajax實現登入名稱的校正

來源:互聯網
上載者:User

標籤:lock   isa   strong   ams   後台   esc   app   font   通過   

頁面效果

  滑鼠失去焦點時,不需要重新整理頁面進行校正,判斷登入名稱是否重複。

 

實現步驟1.引入struts2-json-plugin-2.5.10.1外掛程式包

 

2.頁面使用jquery的ajax實現後台校正js
/**校正登入名稱是否出現重複*/    function checkUser(o){        //alert(o.value);//dom的寫法        //alert($(o).val());//jquery的寫法        var logonName = $(o).val();        //以登入名稱作為查詢條件,查詢該登入名稱是否在資料庫表中存在記錄        $.post("elecUserAction_checkUser.do",{"logonName":logonName},function(data){            //如果棧頂是模型驅動的對象,取值的時候應該使用data.message的方式            //如果棧頂是模型驅動的對象的某個屬性,取值的時候應該使用data即可            if(data==1){                $("#check").html("<font color=‘red‘>登入名稱不可為空</font>");                $(o)[0].focus();                $("#BT_Submit").attr("disabled","none");            }            else if(data==2){                $("#check").html("<font color=‘red‘>登入名稱已經存在</font>");                $(o)[0].focus();                $("#BT_Submit").attr("disabled","none");            }            else{                $("#check").html("<font color=‘green‘>登入名稱可以使用</font>");                $("#BT_Submit").attr("disabled","");            }        });    }

可以看到data作為標識符來判斷登入名稱是否重複,所以在實體類ElecUser.java中加入非持久化javabean屬性

//檢查登入名稱是否重複標識符private String message;public String getMessage() {   return message;}public void setMessage(String message) {   this.message = message;}

 

3.在Action類的代碼中定義checkUser():將String類型的message放置到棧頂
/**      * @Name: checkUser    * @Description: 使用jquery的ajax完成登入名稱的後台校正,判斷是否資料庫中存在,保證登入名稱惟一    * @Parameters: 無    * @Return: 使用struts2的json外掛程式包    */    public String checkUser(){        //1:擷取登入名稱        String logonName = elecUser.getLogonName();        //2:判斷登入名稱是否出現重複        String message = elecUserService.checkUser(logonName);        //放置到棧頂        elecUser.setMessage(message);//棧頂對象是ElecUser對象        //ValueUtils.putValueStack(message);//棧頂對象是String類型的屬性        return "checkUser";    }

這裡面調用了service類的checkUser(logonName)方法,得到標識符的值,然後放入棧頂

 

4.在Service類的代碼中查詢message標識的值
/**      * @Name: checkUser    * @Description: 判斷登入名稱是否存在    * @Parameters: logonName 登入名稱    * @Return: String:判斷登入名稱是否出現重複,返回一個標識message屬性                * message=1 表示登入名稱為空白,不可以儲存                * message=2 表示登入名稱存在,不可以儲存                * message=3 表示登入名稱不存在,可以儲存    */    @Override    public String checkUser(String logonName) {        String message="";        if(StringUtils.isNotBlank(logonName)){            //以登入名稱作為查詢條件,查詢資料庫            String condition=" and o.logonName = ?";            Object[] params={logonName};            List<ElecUser> list = elecUserDao.findCollectionByConditionNoPage(condition, params, null);            //表示登入名稱存在,不可以儲存            if(list!=null&&list.size()>0){                message="2";            }            //表示登入名稱不存在,可以儲存            else{                message="3";            }        }        //登入名稱為空白        else{            message="1";        }        return message;    }

 

5.在struts.xml中添加
<result name="checkUser" type="json">   <!-- root指定message表示尋找棧頂是否有message屬性,如果有,直接通過message的get方法,擷取值放入棧頂 -->     <param name="root">message</param>     <!--對象的某個屬性被json化-->     <param name="includeProperties">message</param></result>

這裡參數名root表示的是如果標識符message是放入elecUser對象中,棧頂是ElecUser對象時,直接通過message的get方法獲得message屬性值放入棧頂,頁面Js中就不需要使用data.message來取值。具體可以看struts外掛程式包原始碼:

protected Object findRootObject(ActionInvocation invocation) {        Object rootObject;//尋找棧頂是否有message屬性        if (this.root != null) {//如果對象有message屬性,直接通過message的get方法,擷取值放入棧頂            ValueStack stack = invocation.getStack();            rootObject = stack.findValue(root);        } else {            rootObject = invocation.getStack().peek(); // model overrides action        }        return rootObject;    }    protected String createJSONString(HttpServletRequest request, Object rootObject) throws JSONException {        String json = JSONUtil.serialize(rootObject, excludeProperties, includeProperties, ignoreHierarchy,                                         enumAsBean, excludeNullProperties, defaultDateFormat);        json = addCallbackIfApplicable(request, json);        return json;    }

 

使用者管理的設計--4.jquery的ajax實現登入名稱的校正

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.