2015-09-02 1 views
0

У меня есть веб-сервис 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 на данный момент.

ответ

0

В соответствии с документами, кажется, умышленно, что вы получаете ресурс в обработчике успеха: При успешном выполнении обещание разрешено с помощью экземпляра экземпляра или объекта ресурса, обновленного данными с сервера. Это упрощает использование в разрезе раздела $ routeProvider.when(), чтобы отложить рендеринг вида до загрузки ресурсов (ов).

+0

Когда я заменяю angular.toJson (значение) на функцию «wrapping», угловой $ resource пытается отправить запрос в конечную точку/service. Кажется, что теперь игнорирование заполнителей в URL теперь всецело. –

+0

Я отредактировал свой ответ - это была ерунда :-) – Rob

+0

Я попытался отправить его без сериализации. Мой бэкэнд Spring ожидает json, поэтому отправка строки без сериализации приводит к ошибкам. Опубликованная вами информация немного объясняет, как работает угловой ресурс $. Я предполагаю, что если на сервере нет данных, угловой не может «обновить» объект и просто вернуть исходный объект. Преднамеренное или нет, это приводит к очень странному поведению. В настоящее время я исправил это, проверив, имеет ли возвращенный объект поле id. Если это не так, я знаю, что проверка прошла. Он работает, но он чувствует себя взломанным. –