На первом шаге я добился успеха, чтобы сохранить одного пользователя с помощью $ resource save в angularjs, переданном в службу Resteasy, и все работает хорошо.
На втором шаге то, что я сейчас пытаюсь сделать, это, Я хочу опубликовать JSON массива пользователей (и сохранить в onego через angularjs $ resource сохранить этот массив объектов) для потребителя Restful WebService (я использую Resteasy).
мой json сейчас выглядит вот так(массив пользователей):
[
{
"userid": 1,
"firstName": "kevin",
"lastName": "buruk",
"email": "pucuk@ubi.com"
},
{
"userid": 2,
"firstName": "helm",
"lastName": "krpuk",
"email": "helmkrupuk@gmail.com"
},
{
"userid": 3,
"firstName": "batok",
"lastName": "kelapa",
"email": "batokkelapa@gmail.com"
}
]
Backend
Для достижения моей цели я работаю с несколькими изменениями в моем предыдущем рабочем бэкэнде, в частности, над UserClientServiceImpl, например:
1 - путем изменения подписи метода создания (см. Код ниже) с конечной пользовательской подписи пользователя на конечную пользовательскую подпись пользователя [], чтобы обрабатывать массив пользователей вместо одного пользователя.
2- и добавив цикл FOR.для запроса уже хорошо подтвержденного
рабочего создания userService
@ Path ("/ users")
открытый класс UserClientServiceImpl реализует UserClientService {
@POST
@Consumes(RestCookieBuilder.JSON_UTF8)
@Produces(RestCookieBuilder.JSON_UTF8)
@Override
public Response create(final User[] users) {<---------Is Signature here is ok?
Response.ResponseBuilder responseBuilder = Response.ok();
for(User user : users) {
try {
userService.create(user);
}
catch(Exception e) {
responseBuilder = Response.status(Response.Status.EXPECTATION_FAILED).entity("{\"error\":\""
+ "canceled user :("
+ e.getMessage() + ")\"}");
}
}
return responseBuilder.build();
}
}
Frontend
и изменил мой UserService в angularjs, добавив save: isArray: true, потому что теперь мы больше не работаем с одним пользователем, а вместо этого мы работаем с массивомпользователей.
В AngularJS для этого сервиса я написал следующий код
(function () {
'use strict';
angular.module('app').factory('UserService', function ($resource){
return $resource('rest/users/', [],
{
delete: {method: 'DELETE', url: 'rest/users/:id'},
save: {method: 'POST',url: 'rest/users',isArray: true},
findAll: {method: 'GET', url: 'rest/users'},
});
});
})();
В AngularJS я также внес некоторые изменения в приведенный ниже код контроллера для отправки через $ ressource в WebService..
на этот раз в моем контроллере я создал список пользователей
и затем попробовал 2 вещи: 1-Моя первая попытка состояла в публикации через $ ressource save to WebService (часть кода, которая комментируетсяв списке ниже).2-Моя вторая попытка была опубликовать через $ http на WebService (см. Ниже в листинге).
var list = [];
for(i = 0; i < users.length; i++) {
var user={};
user=users[i]['value'];
list.push(user);
}
/*UserService.save(JSON.stringify(list), function (success) {
$element.modal('hide');
close({type: 'success', msg: 'Users created successfully'}, 500);
}, function (error) {
alert(" Errorrs for users !!!!!! "+i);
createErrorAlert(error);
});*/
var liststringifyed=JSON.stringify(list);
$http.post("rest/users",{users:liststringifyed})
.success(function (data, status, headers) {
$scope.ServerResponse = data;
$element.modal('hide');
close({type: 'success', msg: 'Users created successfully'}, 500);
})
.error(function (data, status, header, config) {
$scope.ServerResponse = data ;
alert(" Errorrs for users !!!!!! "+i);
});
};
, как вы можете видеть мою первую попытку увидеть закомментированную часть кода, т.е. UserService.save (JSON).stringify (список), функция (успех) не работает.
, с другой стороны, во второй попытке я также попытался использовать службу $ http, как вы можете видеть, но результата тоже нет.
Вопрос о Backend:
Какой правильный синтаксис для службы RestEasy для использования этого массива json users? Я имею в виду: в открытом доступе public Response create (конечные пользователи []) является (конечными пользователями [] пользователи) в качестве подписибыть принятым или я должен использовать другие обходные пути, например, URI или String AnArray, и проанализировать эту строку как здесь:
public create (String AnArray) {
JSONArray o = new JSONArray(AnArray);
System.out.println(o.toString());
return responseBuilder.build();
}
с другой стороны на переднем конце:
- Какой правильный синтаксис вUserService angularjs для достижения успешного использования сохранения из службы angularJS $ ресурсов в этом случае, когда передается массив объектов?
это строка JSON.stringify мой списокЧто нужно сделать
За $ ressource.save
UserService.save(JSON.stringify(list), function (success) {
ИЛИ
За службу $ http
var liststringifyed=JSON.stringify(list);
$http.post("rest/users",{users:liststringifyed}){
Примечание: если мы не можемв этом случае используйте save from $ resource, как добиться этого с помощью службы $ http?
Большое спасибо за вашу помощь.