AngularJS 和带有 ng-Grid 的 JAX-RS

AngularJS and JAX-RS with ng-Grid

我正在开发 AngularJS 和 JAX-RS 应用程序。(坦率地说,这两个都是新手)

在 UI 我有一个 ng-grid,每行有 3 列,第一个复选框,第二个名字,第三个年龄。

用户可以从网格中 select 行并单击 "export to 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 : Cannot Consume Contet Type" UI 看起来像

也试过

   @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
    }

这没有给出错误,但也没有给出所有行,只是在 ....截至目前在字符串中

也试过

   @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
  3. 中消耗数据吗

为了发送 JSON(您当前正在发送 application/x-www-form-urlencoded 但谁知道普通的 HTML 数据是什么样的),您需要处理表单提交事件在您的前端应用程序中。

为此,删除 action 属性并使用 ng-submit 调用使用 $http 或类似于 post 数据的控制器函数...

<form novalidate name="someForm" ng-submit="submit()">

在你的控制器中还有类似的东西

$scope.submit = function() {
    $http.post('/xlsExport', $scope.someDataModel).then(res => {
        // handle the response here
    });
};