Struts2中的json響應


使用struts2進行web開發時,我們需要對表單中用戶的輸入進行驗證,這時客戶端需要發送ajax請求,而服務器端需對客戶端的請求進行響應,這時我們常常會用到json。以郵箱驗證為例,需進行如下4步:

1、在jsp頁面的表單中定義<input name="user.email" type="text" id="txtEmail"/>用於接收用戶輸入的郵箱。

2、引入jquery,寫一段js代碼,當此文本框失去焦點時用於發送ajax請求

$(function(){

        $('#txtEmail').blur(function(){

             var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*$/;

             var email = $('#txtEmail').val();        

             if(email == ""){

                  $('#email\\.info').html("郵箱不能為空");

                  return;

             }

             if(reg.test(email)){            

                  $.post(

                     '應用名/命名空間/email.action',//與struts.xml配置文件中的action名保持一致

                     {"email":email},

                     function(data){

                          if(data){

                              $('#email\\.info').html("郵箱可以使用");

                              flag.email = true;//用於約束表單是否能夠提交

                          }else{

                              $('#email\\.info').html("郵箱被占用");

                          }                   

                     }

                  );             

             }else{

                  $('#email\\.info').html("郵箱不正確");

             }         

         });

 });

3、服務器端寫一個action用於響應客戶端發送的請求,

public class EmailAction {

   private String email;

   private boolean ok;  

   public String getEmail() {

      return email;

   }

   public void setEmail(String email) {

      this.email = email;

   } 

   public boolean isOk() {

      return ok;

   } 

   public void setOk(boolean ok) {

      this.ok = ok;

   }

   public String execute() throws Exception{

      UserDAO dao = new JdbcUserDAO();

      User user = dao.findByEmail(email);

      if(user != null){

        ok = false;//郵箱被占用       

      }else{

        ok = true;//郵箱可以使用

      }       

      return "success";

   } 

}

其中email屬性用於接收客戶端用戶輸入的郵箱,ok用於判斷客戶端輸入的郵箱是否已經存在,當ok = false時表示郵箱已被使用,不能通過驗證,反之則表明郵箱可以使用。同時,在action中一定要提供屬性的get/set方法。

4、寫struts.xml配置文件,將寫好的action配置到服務器中,這一步是最重要最關鍵的一步

<action name="email" class=" action.user.EmailAction">

     <result name="success" type="json">

         <param name="root">ok</param>

     </result>

 </action>

其中<result>中一定要將type規定為json,同時加入<param>組件,規定傳遞的為ok屬性,如果沒有加入<param>在部署該應用時會報警告no default parameter defined for result of type json(沒有為json響應類型定義默認的參數),此時客戶端接收到的就不僅僅是ok屬性而是所有action中的屬性,在客戶端alert返回的數據會顯示object,但是加入<param name=”root”>ok</param>返回的數據中就只有ok,alert時顯示的內容就是true或者false,這里需要注意的是<param name=”root”>ok</param>中name=”root”是固定的寫法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM