Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
params
является объектом параметров запроса по умолчанию в ваших действиях. Если вам нужны параметры URL, вы должны указать их во втором параметре, например:
angular.module('UserService',['ngResource']).factory('User', function($resource){
var User = $resource('/api/users/:id1/:action/:id2', //add param to the url
{id1:'@id'},
{
delete_user: {
method: 'DELETE'
}
});
return User;
});
, это работает с:
// user has id
user.$delete_user(function(){
//success
},function(){
// error
});
или
var data = {id:'id_from_data'};
User.delete_user({},data);
или
var params = {id1:'id1_from_params'};
User.delete_user(params);
Я сделал plnkr-example - вам нужно открыть консоль, чтобы убедиться, что запросы DELETE верны.
См. параметрDefaults в Документация угловых ресурсов .
У меня была эта проблема некоторое время, когда я использовал сервис для добавления / удаления / обновления категорий. При передаче параметров для get он работал нормально, но затем при удалении он дал мне? Id = 1234 вместо api / resource / 1234
Я обошел это, сделав параметр по умолчанию строкой.
/// Контроллер
Service.delete({categoryId:id}, function(resp){
console.log(resp)//whatever logic you want in here
});
// УСЛУГИ
$resource('api/resource/:categoryId', {"categoryId":"@categoryId"}, {
query:{method:"GET"},
delete:{method:"DELETE"},
});
Должен работать, и получающийся URL будет, первоначально у меня был categoryId в параметрах по умолчанию как имя переменной.
api/resource/1234 etc
Просто опустите '@' в параметре
.factory('reportFactory', ['$resource', 'baseUrl', function ($resource, baseUrl) {
return $resource(baseUrl + '/keys/:id', {}, {
delete: { method: 'DELETE',
headers: {
'Content-Type': 'application/json'
},
params: {id: 'id'} }
})
}]);
, это даст вам:
http://localhost:8080/reports/api/keys/b8a8a8e39a8f55da94fdbe6c
без знака вопроса
Если вы хотите удалить модель, нет необходимости добавлять параметры (параметры в любом случае не удаляются для DELETE):
$resource('/users/:id').delete({id: user.id}, function(res) {
...
})
или
$resource('/users/:role/:id').delete({role: 'visitor', id: user.id});
Я не уверен, что это ошибка ngResource.