Я пытаюсь передать свои параметры формы в java rest backend, но я не могу.
контроллер
$scope.addNewThing = function () {
Myservice.addNew($scope.name);
};
оказание услуг
addNew: function (name) {
var Foo = $resource($rootScope.baseUrl + '/path/addNew', {}, {
save: {method: 'POST', params: {}}
});
var results = Foo.save({name: name}, function(data) {
results = data;
});
return results;
}
//also tried this version of code
addNew: function(name) {
return $resource($rootScope.baseUrl + '/path/addNew', {}, {
save: {method: 'POST', params: {name: 'test'}}
});
}
функция остаточного бэкэнд
@POST
@Produces("application/json")
@Path("/addNew")
public Response addNew(@FormParam("name") String name) {
try {
//when i check name here it is always null
...
}
}
Я не могу передать параметр формы html в базу данных java restain через угловой. Также попытался изменить @FormParam
на @QueryParam
но он не сработал.
Использование параметров jQuery решило мою проблему
Вот правильный способ:
Myservice.addNew().save($.param({
name:$scope.name
}),function(data){
console.log(data);
},function(err){
console.log(err);
});
Я могу передать такие параметры с помощью $ resource service.
Я не знаю, как получить значение params
в java
но я могу показать, как передавать params
из углового service
. когда вы захотите передать параметры, вы должны использовать :paramsName
в URL-адресе.
addNew: function(name) {
var addNewItem = $resource($rootScope.baseUrl + '/path/addNew/:name', {name: '@name'}, {
'post': {method: 'GET'}
});
return addNewItem.post({name: name});
}
или если вы не используете /:name
в своем URL-адресе, вы должны передать свой заголовок
addNew: function(name) {
var addNewItem = $resource($rootScope.baseUrl + '/path/addNew/:name', {}, {
'post': {method: 'GET', headers: { 'name': name }}
});
return addNewItem.post({name: name});
}
NB: ваш Content-Type
должен быть application/json
params
в header
Вы можете попробовать следующее:
КОНТРОЛЛЕР
$scope.addNewThing = function () {
yourService.addNew($scope.name);
};
ОКАЗАНИЕ УСЛУГ
angular.module('MyApp')
.service('yourService',['$http', function ($http) {
this.addNew = function (data) {
$http({
url: 'YourURL',
method: 'POST',
data: data, // your $scope.name
headers: {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}
})
.success(function (response) {
console.log('good');
})
.error(function (response) {
console.log('error');
});
};
}]);
API JAVA REST
@POST
@Path("/addNew")
@Consumes("*/*")
public Response addNew(String name) {
// use here your String name
}
Вы задали content-type
по умолчанию в запросах $http
POST?
app.config(function($httpProvider) {
$httpProvider.defaults.headers.post = {};
$httpProvider.defaults.headers.post["Content-Type"] = "application/json; charset=utf-8";
});
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';
я пытаюсь твой сейчас
data
вместоparams
внутри вашего http-запроса