#angularjs #jax-rs #ng-grid
#angularjs #jax-rs #ng-grid
Вопрос:
Я работаю над приложением AngularJS и JAX-RS.(честно говоря, я новичок в обоих)
В пользовательском интерфейсе у меня есть ng-сетка, каждая строка имеет 3 столбца, 1-й флажок, 2-е имя, 3-й возраст.
Пользователь может выбрать строки из сетки и нажать «экспортировать в Excel». Я отправляю все данные, когда пользователь нажимает на кнопку экспорта в Excel
@POST
@PATH("/xlsExport")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response excelExport(MultiPartFormData mfd) throws Exception {
System.out.ptrintln(mfd); // code not reaching here
}
Я получаю исключение «RESTEASY003065: не удается использовать тип содержимого»
Пользовательский интерфейс выглядит так
Также пробовал
@POST
@PATH("/xlsExport")
@Consumes(MediaType.APPLICATION_JSON)
public Response excelExport(String mfd) throws Exception {
System.out.ptrintln(mfd); // code not reaching here
}
Та же ошибка
Также пробовал
@POST
@PATH("/xlsExport")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response excelExport(String mfd) throws Exception {
System.out.ptrintln(mfd); // incorrect values shown
}
Это не дало ошибки, но также не дало мне всех строк, просто дает некоторые неправильные значения в …. поэтому, если я выберу 3 строки из 10, я получу некоторые неправильные значения в строке на данный момент
Также пробовал
@POST
@PATH("/xlsExport")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED_TYPE)
public Response excelExport(@FormParam("id") Sting id) throws Exception {
System.out.ptrintln(id); // Compile time error
}
Та же ошибка
<form novalidate name="someForm" method="POST" action="/xlsExport">
...
<div class="ngHeaderContainer">
<div> <input class="ngSelectoionHeader" .../> </div> <!-- checkbox -->
<div> Name </div>
<div> Age </div>
</div>
<input type="submit" value="Export">
</form>
Буду признателен, если смогу получить некоторую помощь
- Как я могу устранить ошибку
- Это лучший способ сделать это, не могу ли я использовать данные в JSON
Комментарии:
1. Чтобы отправить JSON (который вы сейчас отправляете
application/x-www-form-urlencoded
, но кто знает, как выглядят данные), вам нужно будет обработать событие отправки формы в вашем интерфейсном приложении (т. Е. Удалитьaction
атрибут и использоватьng-submit
), а затем использовать$http
или аналогично для отправки данных2. Спасибо за вашу помощь, смог сделать это с помощью ng-submit … Я не вижу возможности принять комментарий как ответ …. может быть, если вы сможете опубликовать то же самое, что и ответ, примете его
Ответ №1:
Чтобы отправить JSON (который вы в данный момент отправляете application/x-www-form-urlencoded
, но кто знает, как выглядят простые HTML-данные), вам нужно будет обработать событие отправки формы в вашем интерфейсном приложении.
Для этого удалите action
атрибут и используйте ng-submit
для вызова функции контроллера, которая использует $http
или аналогична для публикации данных…
<form novalidate name="someForm" ng-submit="submit()">
и что-то подобное в вашем контроллере
$scope.submit = function() {
$http.post('/xlsExport', $scope.someDataModel).then(res => {
// handle the response here
});
};