2016-10-03 49 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