繁体   English   中英

Spring MVC控制器将空数据返回到视图

[英]Spring MVC controller returns null data to the view

我有一个控制器,它返回用户列表。 当用户存在时,该程序可以正常运行。 但是,当找不到用户时,控制器将null返回到jsp页面,在这种情况下,我得到了一个空白屏幕,没有打印出jsp页面中的任何“警报”。 请让我知道为什么无法打印alert(“用户不存在”),以及当控制器向jsp页面返回null时如何处理这种情况。

   @RequestMapping(value = "/userSearch",
                   method = RequestMethod.POST,
                   produces = "application/json")
   @ResponseBody
   public UserList search @RequestParam String username) 
   {     
          UserList userListObj = search(username); // search database

          if (userListObj.getUserList().size() > 0) 
          {
              return userListObj;
          } 
          else 
          {
              return null;
          }
     }

JSP代码:

    function ajaxUserSearch() 
    {   
         var uname = $("#userName").val();
         if ( uname )
         {              
              $.ajax({
                type: "POST",
                url: "userSearch.htm",
                data: "username=" + uname ,
                dataType: "json",
                success: function(data) 
                {   
                     alert("data=" + data);
                     if ( data!=null )
                     {      
                          alert("data not null");
                     } 
                     else 
                     {            
                         alert(" user does not exist, please check");
                     }                 
                },                   
                error: function(jqXHR, status, error)
                {
                    alert("error=" + error + "\nstatus=" + status);
                }              
             });
       }
       else // If no name is entered but Search button is pressed
       {
            alert("Please enter a user name.");
       }
} 

不要返回null。 它基本上是一个空的http响应。

在Java代码中,尝试返回以下内容: return "notfound"

然后在Javacript success尝试做类似的事情:

if (data != null) {
   if (data === "notfound") {
     alert("user not found"); 
   } else {
      alert("user found" + data);
   }
} else {
   alert("unexpected error when finding user. please try again"); 
}

甚至根本不需要检查控制器中userListObj的大小...只需将对象返回到页面即可:

@ResponseBody
public UserList search @RequestParam String username) {     
      return search(username); // search database
}

然后在ajax成功函数中,解析json并检查UserList的长度:

success: function(data) {   
    var userListObj = $.parseJSON(data);
    if(userListObj.UserList.length > 0) {      
        alert("data not null");
    } else {
        alert("user does not exist, please check");
    }

我通过在客户端输入字段上禁用Enter键解决了自己的问题。

  $("form").bind("keypress", function (event) 
            {
                if (event.keyCode == 13) 
                {
                    event.preventDefault();
                    return false;
                }
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM