2016-10-04 78 views
0

我想通过我的休息控制器的响应当用户试图注册表单到我的java脚本无论用户名是否可用或不基于spring controller返回的语句但是我试图在我的弹簧控制器中使用模型属性。我在js中捕获这个方法的方式是什么。从servlet的角度来看,它完成了,因为我们已经完成了。写如何用spring来完成。返回弹簧控制器对角js的响应

我的春天控制器

@RequestMapping(method = RequestMethod.POST,value = "/checkUserName", headers = "Accept=application/json") 
public org.weber.nag.model.UserRegistration checkUserName(@RequestBody org.weber.nag.model.UserRegistration userReg, Model model) { 
    userDao.getAllUsers(userReg); 
    System.out.println(userDao.getAllUsers(userReg)); 
    model.addAttribute("success", userReg); 
    return userReg; 
} 

AngularJS

var formData = { 
       'userName' : $scope.ctrl.newCustomer.userName 
      }; 
     var response =$http.post('http://localhost:8081/Weber/user/checkUserName', formData); 
     response.success(function(data, status, headers, config) { 

      var cntrlMessage = $('#message'); 
       message = cntrlMessage; 
       //alert(message); 
      alert(message); 
      $scope.list.push(data); 
     }); 
     response.error(function(data, status, headers, config) { 
      alert("User name already exists."); 
     }); 

更新的春天控制器

@RestController 
@RequestMapping(value = "/user") 
public class UserRegistrationControllerImpl{ 

@RequestMapping(method = RequestMethod.POST,value = "/checkUserName", headers = "Accept=application/json") 
public String checkUserName(@RequestBody org.weber.nag.model.UserRegistration userReg, ModelMap model) { 
    userDao.getAllUsers(userReg); 
    System.out.println(userDao.getAllUsers(userReg)); 
    String message = userDao.getAllUsers(userReg); 
    model.addAttribute("message", message); 
    return message; 
} 
} 

我试着用$击中休息控制器HTTP它的工作以及我怎么能走我的休息控制器休息说,用户可用/用户不可用回我的js作为警报。

谢谢

回答

0

您的代码似乎使用Ajax完成工作。

然后,您的Ajax成功方法期望接受文本响应。

有了这样说:

  1. 从控制器刚刚返回任何字符串/文本要显示作为一个合法的答案:user available/user not available

  2. @ResponseBody将告诉Spring来注释控制器返回HTTP响应中的字符串答案。因此,您的Ajax成功方法将接受该HTTP响应,并带有user available/user not available消息。

  3. 确保您使用console.log

    @RequestMapping(method=RequestMethod.POST,value="/checkUserName") 
    @ResponseBody 
    public UserRegistration checkUserName(@RequestBody UserRegistration userReg, Model model) { 
        userDao.getAllUsers(userReg); 
        System.out.println(userDao.getAllUsers(userReg)); 
        model.addAttribute("success", userReg); 
        return userReg; 
    } 
    
+0

是的,我已经注释我与春天@RestContorller控制器实际上得到的是串在你的js文件。试图返回一个字符串响应,但没有运气它不显示在console.I将张贴更新模块在我的文章。 – mark

+0

我提到'@ ResponseBody'不是'@ RestContorller' –

+0

RestCotroller会照顾Responsebody太多,如果我是正确的。反正我会添加注释你建议:)即使我添加responsebody仍然没有显示任何警报我的js,但是当我打开控制器时,我可以看到“用户可用/用户不可用”我的eclipse控制台 – mark