У меня есть веб-сервис java, который я использую для проверки уникальных полей. Он берет строку и ищет базу данных для объектов, которые уже имеют это значение в одном из своих полей. Java Spring конечная точка
@RequestMapping(value = "/value", method = RequestMethod.POST)
@ResponseCaching(mode = Mode.NEVER)
@ResponseBody
public Keuze findByValue(@RequestBody final String value) {
return getService().findByvalue(value);
}
угловой объект $ Ресурс:
var resource = $resource('service/:entity/:field', {}, {
uniqueValue: {
method: 'POST',
url: 'service/:entity/:field',
cache: false
}
});
функция в службу проверки, которая делает проверку:
function uniqueValue(entity, field, value) {
return resource.uniqueValue({entity:entity,field:field}, angular.toJson(value)).$promise;
}
Я называю эту функцию в директиве , например:
validationService.uniqueValue('keuzes', 'omschrijving', viewValue).then(function(keuze) {
ctrl.$setValidity('unique', !keuze || keuze.id == scope.keuze.id);
});
Проблема, с которой я сталкиваюсь, заключается в том, что угловой ресурс возвращает объект, который был отправлен в веб-службу, когда сам веб-сервис возвращает значение null. Только когда webservice возвращает объект, он работает правильно. Скажем, пользователь вводит значение «тест», то кажется, в директиве, что вебсервис вернулся следующее:
{
0: """,
1: "t",
2: "e",
3: "s",
4: "t",
5: """
}
Проверка инструментов разработчика Chrome ясно указывает на то, что вебсервис сделал свою работу правильно и не дал ничего.
Я ранее реализовал это с угловым $ http, и это сработало нормально. Является ли это поведение угловатых $ ресурсов преднамеренным, и я что-то упускаю, или это ошибка? Я не мог найти никаких других ссылок на это поведение в другом месте, что заставляет меня думать, что я делаю что-то неправильно.
PS: Я использую угловой 1.3.2 на данный момент.
Когда я заменяю angular.toJson (значение) на функцию «wrapping», угловой $ resource пытается отправить запрос в конечную точку/service. Кажется, что теперь игнорирование заполнителей в URL теперь всецело. –
Я отредактировал свой ответ - это была ерунда :-) – Rob
Я попытался отправить его без сериализации. Мой бэкэнд Spring ожидает json, поэтому отправка строки без сериализации приводит к ошибкам. Опубликованная вами информация немного объясняет, как работает угловой ресурс $. Я предполагаю, что если на сервере нет данных, угловой не может «обновить» объект и просто вернуть исходный объект. Преднамеренное или нет, это приводит к очень странному поведению. В настоящее время я исправил это, проверив, имеет ли возвращенный объект поле id. Если это не так, я знаю, что проверка прошла. Он работает, но он чувствует себя взломанным. –