angularjs - not - init angular js
Objeto de publicaciĆ³n JS angular para Jersey es nulo (1)
Estoy tratando de publicar mis datos de formulario en mi servicio de descanso usando js angulares y jersey. Sin embargo, el frijol recibido en el servicio de descanso es nulo. A continuación está mi código angular para la solicitud POST.
(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();
})
})();
Los datos del formulario se llenan con éxito en la declaración $ http.post. Sin embargo, el bean en el método para consumir la solicitud es nulo cada vez.
@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);
}
El principal problema que veo es el uso incorrecto de @BeanParam
. Esto solo debe usarse para casos en los que desee combinar diferentes params anotados @XxxParam
en un POJO, como
public class Survey {
@FormParam("id")
public String id;
@FormParam("title")
public String title;
}
Entonces @BeanParam
funcionaría, dado que los datos realmente vienen en application/x-www-form-urlencoded
. Pero su solicitud en realidad está entrando como JSON, lo que significa que la solicitud no se está convirtiendo en la Survey
Si simplemente elimina @BeanParam
, y tiene un proveedor JSON registrado, debería funcionar.