2016-03-06 2 views
0

Я пытаюсь опубликовать строку (позже это, вероятно, будет массив или карта) в приложении для моего Джерси, но я не могу заставить его работать.

Метод Джерси:

@GET 
@javax.ws.rs.Path("/angu/{param}") 
@Consumes(MediaType.APPLICATION_JSON) 
public void testAngu(@PathParam("param") String param){ 

} 

Угловое обслуживание:

services.factory('testFactory', function ($resource) { 
return $resource('/app/api/folders/angu/:param', {}, { 
    save: { 
     method: 'POST', 
     params: {param : '@param'} 
    } 
}) 

});

Угловое Контроллер:

app.controller('scanController', ['$scope', 'firstScanFactory', 'testFactory', function ($scope, firstScanFactory, testFactory) { 
firstScanFactory.get({}, function (firstScanFactory) { 
    $scope.shows = firstScanFactory.listShows; 
}) 

$scope.callJersey = function() { 
    testFactory.save("toto"); 
} 

}]);

И, наконец, кнопка для вызова:

<a class="ls-sc-button default" ng-click="callJersey()">Valider</a> 

Что я делаю неправильно?

+0

Что не работает? Вы получаете ошибки? Нет результатов? У вас есть дампы переданного JSON и что Джерси получает в 'param'? –

+0

Мой угловой контроллер называется, но после того, как я не знаю. Я поставил точку останова в майке, но я никогда туда не попал. Вероятно, что-то не так с услугой или методом джерси. – Skulker

ответ

0
  1. Ваш Джерси-метод с аннотацией @GET, однако ваш Угловой код использует method: 'POST'.

    Из-за этого Джерси никогда не выберет testAngu() в качестве соответствующего маршрута.

  2. Если вы используете @, вам необходимо передать этот параметр как свойство объекта. Строка @param покажет ресурс, чтобы заменить :param со свойством парам на объект передается в качестве параметров:

    testFactory.save({"param": "toto"});

API documentation говорит:

Если значение параметра с префиксом @, тогда значение для этого параметра будет извлечено из соответствующего свойства объекта данных (предоставленного при вызове метода действия). Например, если объект defaultParam является {someParam: '@someProp'}, то значением someParam будет data.someProp.

+0

изменить метод джерси: \t '@POST \t @ javax.ws.rs.Path ("/ Angu/{паров}") \t @Consumes (MediaType.APPLICATION_JSON) \t общественного недействительный testAngu (@PathParam («param») String param) { \t \t \t} ' Но я все еще не могу отлаживать свой метод. – Skulker

+0

Вы просматривали вкладку сети в инструментах разработчика браузера? Есть ли запрос POST? И к какому URL? –

+0

Да, есть сообщение, но я не вижу никаких параметров в URL-адресе. URL запроса: HTTP: // локальный: 8080/приложение/API/папки/Angu Метод запроса: POST Код состояния: 404 Not Found Удаленный адрес: 127.0.0.1: 8080 – Skulker

Смежные вопросы