AngularJS и JAX-RS с ng-Grid

#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>
  

Буду признателен, если смогу получить некоторую помощь

  1. Как я могу устранить ошибку
  2. Это лучший способ сделать это, не могу ли я использовать данные в 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
    });
};