AngularJS:向REST(Java+;Jersey)发送javascript数组(POST)时出错

AngularJS:向REST(Java+;Jersey)发送javascript数组(POST)时出错,javascript,arrays,angularjs,json,Javascript,Arrays,Angularjs,Json,我目前正在将一个系统从Sencha ExtJS迁移到Angular,我在向REST Web服务(使用Jersey在Java中开发)发送对象数组时遇到问题 基本上,我的数组看起来像: @POST @Path("sysappdownloads") @Consumes(MediaType.APPLICATION_JSON) public void updateDownloadsEnvironments(List<SysDownloadsEnv> environmentsList) {

我目前正在将一个系统从Sencha ExtJS迁移到Angular,我在向REST Web服务(使用Jersey在Java中开发)发送对象数组时遇到问题

基本上,我的数组看起来像:

@POST
@Path("sysappdownloads")
@Consumes(MediaType.APPLICATION_JSON)
public void updateDownloadsEnvironments(List<SysDownloadsEnv> environmentsList) {
    log.debug("updateDownloadsEnvironments() - requested to update environments for ETMS downloads: {}", environmentsList);
    getDelegate().updateEnvironmentInfo(environmentsList);
    log.debug("updateDownloadsEnvironments() - process ended successfully");
}

它有两个对象(但它肯定可以处理更多的项),包含该数组的变量的名称是:“data”。我使用的angular代码是一个基本的“$http.post”:

REST服务中的方法如下所示:

@POST
@Path("sysappdownloads")
@Consumes(MediaType.APPLICATION_JSON)
public void updateDownloadsEnvironments(List<SysDownloadsEnv> environmentsList) {
    log.debug("updateDownloadsEnvironments() - requested to update environments for ETMS downloads: {}", environmentsList);
    getDelegate().updateEnvironmentInfo(environmentsList);
    log.debug("updateDownloadsEnvironments() - process ended successfully");
}
@POST
@路径(“sysappdownloads”)
@使用(MediaType.APPLICATION_JSON)
public void updateDownloadsEnvironments(列表环境列表){
debug(“updateDownloadsEnvironments()-请求为ETMS下载更新环境:{}”,environmentsList);
getDelegate().updateEnvironmentInfo(环境列表);
debug(“updateDownloadsEnvironments()-进程成功结束”);
}

该方法正在接收与数组中存储的对象具有相同值/属性的对象列表

但我收到了以下堆栈跟踪:

<?xml version="1.0" encoding="UTF-8" ?>

<com.mci.etms.cmn.exception.UnexpectedException id="1">
  <detailMessage>Unexpected Runtime error occurred (javax.ws.rs.WebApplicationException)</detailMessage>
  <cause class="java.lang.Exception" id="2">
    <detailMessage>[javax.ws.rs.WebApplicationException(sanitized)] null</detailMessage>
    <stackTrace id="3">
      <trace id="4">com.sun.jersey.server.impl.uri.rules.TerminatingRule.accept(TerminatingRule.java:66)</trace>
      <trace id="5">com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)</trace>
      <trace id="6">com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)</trace>
      <trace id="7">com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)</trace>
      <trace id="8">com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542)</trace>
      <trace id="9">com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473)</trace>
      <trace id="10">com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)</trace>
      <trace id="11">com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)</trace>
      <trace id="12">com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)</trace>
      <trace id="13">com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540)</trace>
      <trace id="14">com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715)</trace>
      <trace id="15">javax.servlet.http.HttpServlet.service(HttpServlet.java:820)</trace>
      <trace id="16">weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)</trace>
      <trace id="17">weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)</trace>
      <trace id="18">weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)</trace>
      <trace id="19">weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)</trace>
      <trace id="20">weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)</trace>
      <trace id="21">com.mci.etms.server.filter.InboundHTTPRequestFilter.doFilter(InboundHTTPRequestFilter.java:55)</trace>
      <trace id="22">weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)</trace>
      <trace id="23">weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)</trace>
      <trace id="24">weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)</trace>
      <trace id="25">weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)</trace>
      <trace id="26">weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)</trace>
      <trace id="27">weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)</trace>
      <trace id="28">weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)</trace>
      <trace id="29">weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)</trace>
      <trace id="30">weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)</trace>
      <trace id="31">weblogic.work.ExecuteThread.run(ExecuteThread.java:178)</trace>
    </stackTrace>
  </cause>
  <stackTrace id="32">
    <trace id="33">com.mci.etms.server.corba.ExceptionConverter.basicConvertAndThrow(ExceptionConverter.java:193)</trace>
    <trace id="34">com.mci.etms.server.corba.ExceptionConverter.convertAndThrow(ExceptionConverter.java:134)</trace>

发生意外的运行时错误(javax.ws.rs.WebApplicationException)
[javax.ws.rs.WebApplicationException(已消毒)]空
com.sun.jersey.server.impl.uri.rules.TerminatingRule.accept(TerminatingRule.java:66)
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequest(WebApplicationImpl.java:1542)
com.sun.jersey.server.impl.application.WebApplicationImpl.\u handleRequest(WebApplicationImpl.java:1473)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715)
javaservlet.http.HttpServlet.service(HttpServlet.java:820)
weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
com.mci.etms.server.filter.InboundHTTPRequestFilter.doFilter(InboundHTTPRequestFilter.java:55)
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
com.mci.etms.server.corba.ExceptionConverter.basicconverter和throw(ExceptionConverter.java:193)
com.mci.etms.server.corba.ExceptionConverter.convertanthrow(ExceptionConverter.java:134)
我尝试使用JSON.parse、JSON.stringify和angular.parse。你知道Angular是否有特殊的方法来处理帖子,或者我需要以某种方式格式化数据吗


提前感谢。

“该方法正在接收与数组中存储的对象具有相同值/属性的对象列表。”-这是问题还是期望的结果?什么不起作用?我的错,对不起,我忘了添加stacktrace。问题是,在发布数组时,基于该数组,我通过REST服务在数据库中进行更新。方法不会返回值,它只是一个void类型。我仍然很难理解您的问题。如果您在
log.debug(“updateDownloadsEnvironments()
”上设置断点,是否会调用它?是否可以添加执行POST的角度代码?以及Java端的
environmentsList
中的实际内容?