2016-10-03 24 views
1

你好,我想发布一个窗体使用角度,但我得到null值在我的弹簧controller.Also在我的控制台我看到空值为sysout.Moreover我即使我看到公牛印在我的控制台上,也会收到错误警报。AngularJs形式发布数据在我的弹簧控制器中给出null值

我的JS控制器

angular.module('ngMailChimp', ['ngAria', 'ngMessages', 'ngAnimate']) 
.controller('SignUpController', function ($scope, $http) { 
    $http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=utf-8"; 
    var ctrl = this, 
     newCustomer = { firstName:'',lastName:'',email:'',streetName:'',aptName:'',cityName:'',stateName:'',countryName:'', zipName:'', userName:'',password:'' }; 

    var signup = function() { 
     if(ctrl.signupForm.$valid) { 
      ctrl.showSubmittedPrompt = true; 
      var formData = { 
        'firstName' : $scope.ctrl.newCustomer.firstName, 
        'lastName' : $scope.ctrl.newCustomer.lastName, 
        'email' : $scope.ctrl.newCustomer.email, 
        'streetName' : $scope.ctrl.newCustomer.streetName, 
        'aptName' : $scope.ctrl.newCustomer.aptName, 
        'cityName' : $scope.ctrl.newCustomer.cityName, 
        'stateName' : $scope.ctrl.newCustomer.stateName, 
        'countryName' : $scope.ctrl.newCustomer.countryName, 
        'zipName' : $scope.ctrl.newCustomer.zipName, 
        'userName' : $scope.ctrl.newCustomer.userName, 
        'password' : $scope.ctrl.newCustomer.password 
      }; 

      var response = $http.post('http://localhost:8080/Weber/user/save', JSON.stringify(formData)); 
      response.success(function(data, status, headers, config) { 
       $scope.list.push(data); 
      }); 
      response.error(function(data, status, headers, config) { 
       alert("Exception details: " + JSON.stringify({data: data})); 
      }); 

     } 
    }; 

我的春天控制器

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

@Autowired 
UserRegistrationDao userDao; 

@RequestMapping(value = "/save", method = RequestMethod.POST) 
public String saveUser(UserRegistration userReg) { 
    System.out.println(userReg.getFirstName()+" "+userReg.getLastName()); 
    userDao.registerUser(userReg); 
    return "success"; 
} 

请帮我

谢谢 标志。

回答

1

没有对JSON转换为Java对象指定的映射。

如果您希望将JSON转换为UserRegistration对象,请使用Jackson(dore,databind,annotations)。

检查了这一点:Convert nested java objects to Jackson JSON

需要在调度员的servlet下面添加。这是JSON映射到Java对象:

<beans:bean 
     class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 
     <beans:property name="messageConverters"> 
      <beans:list> 
       <beans:ref bean="jsonMessageConverter" /> 
      </beans:list> 
     </beans:property> 
    </beans:bean> 

    <!-- Configure bean to convert JSON to POJO and vice versa --> 
    <beans:bean id="jsonMessageConverter" 
     class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> 
    </beans:bean> 

编辑1: 是在控制器像这样的方法?

@RequestMapping(value = "/save", method = RequestMethod.POST, headers = "Accept=application/json") 
public String saveUser(@RequestBody UserRegistration userReg) { 
    System.out.println(userReg.getFirstName()+" "+userReg.getLastName()); 
    userDao.registerUser(userReg); 
    return "success"; 
} 

如果您没有响应回网页并且结果被消耗,则使用上述方法。如果你想从这个方法返回,并在网页上显示的东西或其他地方消费,方法的声明将变为:

public @ResponseBody String saveUser(@RequestBody UserRegistration userReg) 

编辑2:

$scope.post = function() { 
     $scope.data = null; 
     $http({ 
      method : 'POST', 
      url : 'save', 
      params : { 
      firstName : $scope.ctrl.newCustomer.firstName, 
      lastName : $scope.ctrl.newCustomer.lastName, 
      email : $scope.ctrl.newCustomer.email, 
      streetName : $scope.ctrl.newCustomer.streetName, 
      aptName : $scope.ctrl.newCustomer.aptName, 
      cityName : $scope.ctrl.newCustomer.cityName, 
      stateName : $scope.ctrl.newCustomer.stateName, 
      countryName : $scope.ctrl.newCustomer.countryName, 
      zipName : $scope.ctrl.newCustomer.zipName, 
      userName : $scope.ctrl.newCustomer.userName, 
      password : $scope.ctrl.newCustomer.password 
      } 
     }).success(function(data, status, headers, config) { 
      $scope.list.push(data); 
     }).error(function(data, status, headers, config) { 
      alert("Exception"); 
     }); 
    }; 
+0

但我得到的回复在所有字段为空 – mark

+0

@mark请检查编辑并让我知道。 – HARDI

+0

当我把类似于你的建议作为第一次编辑提示我抛出“客户端发送的请求在语法上不正确”。对于第二个也是当我尝试称它形成我的角度我的意思是当我尝试发布使用我的angularjs的东西同样的错误显示 – mark

0

尝试在方法参数添加@RequestBody

@RequestMapping(value = "/save", method = RequestMethod.POST) 
public String saveUser(@RequestBody UserRegistration userReg) { 
    System.out.println(userReg.getFirstName()+" "+userReg.getLastName()); 
    userDao.registerUser(userReg); 
    return "success"; 
} 
+0

它仍然给我空值。 – mark

+0

您是否尝试使用邮递员? –

+0

是的,当我这样做时,它表示客户端请求在语法上不正确。 { “lastName”:“mark”, “firstName”:“k”, “email”:“[email protected]”, “streetName”:“abc”, “aptName”:“12”, “城市”: “弗里蒙特”, “状态”: “CA”, “国”: “USA”, “拉链”: “95747”, “username” 的: “Mark6656”, “密码”: “Mark” } – mark