gpt4 book ai didi

angularjs - Angular JS post 对象到 Jersey 为 null

转载 作者:行者123 更新时间:2023-12-02 06:13:10 24 4
gpt4 key购买 nike

我正在尝试使用 Angular js 和 jersey 将表单数据发布到我的休息服务。然而,在其余服务中接收到的 bean 为空。以下是我的 POST 请求的 Angular 代码。

(function() {
var dataUrls = {
addSurveyUrl : '/CompanySurveyPortal/Company/Surveys/addSurvey'
}

angular.module('addNewSurvey', []).service('addSurveyDataService',
function($http) {
this.addNewSurvey = function(survey)
{
return $http.post(dataUrls.addSurveyUrl, {"surveyId": survey.surveyId, "title": survey.question, "choice1": survey.firstOption, "choice2": survey.secondOption ,"status": 'Open'});

};
})

.controller('AddNewSurveyController', function($scope, $log, responseDataService, $stateParams, $state, $filter, $rootScope, addSurveyDataService){
this.survey = {};
this.addSurvey = function(){
addSurveyDataService.addNewSurvey(this.survey);

};
function init(){

}
init();
})

})();

表单中的数据已成功填充到 $http.post 语句中。然而,使用请求的方法中的 bean 每次都是 null。

@POST
@Path("addSurvey")
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_JSON)
public void addNewSurvey(@BeanParam Survey survey,
@Context HttpServletResponse servletResponse) throws IOException,
SQLException {
SurveyDao surveyDao = new SurveyDao();
surveyDao.addSurvey(survey);

}

最佳答案

我看到的主要问题是 @BeanParam 的使用不正确。这应该仅用于您想要将不同的 @XxxParam 带注释的参数组合到 POJO 中的情况,例如

public class Survey {
@FormParam("id")
public String id;
@FormParam("title")
public String title;
}

然后,鉴于数据实际上来自 application/x-www-form-urlencoded@BeanParam 就可以工作。但您的请求实际上是以 JSON 形式传入的,这意味着该请求不会转换为调查

如果你简单地删除@BeanParam,你就会得到一个JSON provider已注册,应该可以工作。

关于angularjs - Angular JS post 对象到 Jersey 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29590124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com