当前位置: 首页 > 知识库问答 >
问题:

Dropwizard。发送Json并使jersey jackson识别类

沈子实
2023-03-14

我是法利新到杰克逊和泽西。已经做了一些使用这些库的程序。但是我有一个问题,我找不到解决方案。

  @POST
  @Path("/submit")
  @Consumes(MediaType.APPLICATION_JSON)
  public void submitTicket(Ticket ticket)
  {
    System.out.println("*** SUBMIT A NEW TICKET ***");
    System.out.println("Ticket: " + ticket);
  }

这是在我的ticketResources类中。我正在尝试将json从我的web应用程序发送到服务器。但是我只在尝试时得到错误。

    $('#newTicketSubmit').click(function () {
    var jsonData = [
       {'topic':$('#inputTopic').val()},
       {'priority':$('#inputPriority option:selected').val()},
       {'assigned':$('#inputAssign option:selected').val()},
       {'text':$('#inputText').val()},
       {'solved':0},
       {'date':'No date set'}
    ];




    $.ajax({
        type: 'POST',
        url: '/ticket/submit',
        // The key needs to match your method's input parameter (case-sensitive).
        data: JSON.stringify(jsonData),
        processData: false,
        contentType: 'application/json; charset=utf-8',
        success: function(data){alert(data);},
        failure: function(errMsg) {
            alert(errMsg);
        }
    });
  });

这是我的javascript文件的样子。它确实调用了服务器。但是我不能100%确定我是否做的一切都是正确的

public class Ticket {

  public Ticket()
  {
    /* Empty */
  }


  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @JsonProperty
  private int id;

  @NotEmpty
  @JsonProperty
  private String topic;

  @NotEmpty
  @JsonProperty
  private String text;

  @NotNull
  @JsonProperty
  private int solved;

  @NotNull
  @JsonProperty
  private int priority;

  @NotNull
  @JsonProperty
  private int assigned;

  @NotEmpty
  @JsonProperty
  private String date;

最后,这里是我的Ticket类的一个片段,我想让我的项目理解的是,当我从javascript应用程序发送一些东西时。然后服务器将了解如何从该json数据创建票证类。如果我理解正确的话。这应该是可能的。但不知怎的,我做错了什么。

任何能让我走上正确道路的帮助都非常受欢迎

    com.sun.jersey.spi.container.ContainerResponse: A message body writer for Java class io.dropwizard.jersey.errors.ErrorMessage, and Java type class io.dropwizard.jersey.errors.ErrorMessage, and MIME media type application/octet-stream was not found.
The registered message body writers compatible with the MIME media type are:
*/* ->
  com.sun.jersey.core.impl.provider.entity.FormProvider
  com.sun.jersey.server.impl.template.ViewableMessageBodyWriter
  com.sun.jersey.core.impl.provider.entity.StringProvider
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
  com.sun.jersey.core.impl.provider.entity.ReaderProvider
  com.sun.jersey.core.impl.provider.entity.DocumentProvider
  com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider
  com.sun.jersey.core.impl.provider.entity.SourceProvider$SourceWriter
  com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
  com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
application/octet-stream ->
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.StreamingOutputProvider

Stracktrace异常:

javax.ws.rs.com.sun.jersey.api.MessageExctive:未找到Java类io.dropwizard.jersey.validation.ValidationErrorMessage和Java类型类io.dropwizard.jersey.validation.ValidationErrorMessage和MIME媒体类型应用程序/octet-stream的消息体编写器。

at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:284)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1510)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:540)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:715)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
at io.dropwizard.jetty.NonblockingServletHolder.handle(NonblockingServletHolder.java:49)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1515)
at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:83)
at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:348)
at io.dropwizard.jetty.BiDiGzipFilter.doFilter(BiDiGzipFilter.java:127)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1486)
at io.dropwizard.servlets.ThreadNameFilter.doFilter(ThreadNameFilter.java:29)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1486)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:519)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1097)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:448)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1031)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at com.codahale.metrics.jetty9.InstrumentedHandler.handle(InstrumentedHandler.java:173)
at io.dropwizard.jetty.RoutingHandler.handle(RoutingHandler.java:51)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:92)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:162)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:446)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:271)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:246)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:358)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:601)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:532)
at java.lang.Thread.run(Thread.java:745)

共有1个答案

凤昊东
2023-03-14

昨天我找到了解决问题的办法。问题是我对Json数据的实现

   var jsonData = {
     'topic':$('#inputTopic').val(),
     'priority':parseInt($('#inputPriority option:selected').val()),
     'assigned':parseInt($('#inputAssign option:selected').val()),
     'text':$('#inputText').val(),
     'solved':0,
     'date':'No date set'
  };

这是一个在javascript中工作的Json数据的例子。

 类似资料:
  • 问题内容: 我正在使用最新的SDK开发iOS 5.0+应用程序。 我收到此代码一个非常奇怪的错误: 这是我的日志: 看来是。但是我不明白,如果是为什么我在日志上看不到。 我第二次运行该方法时第一次遇到此错误,我没有任何错误。这是我的日志: 顺便说说: 有什么建议吗? 也许某个地方… 问题答案: 我对JSON解释器疯狂使用NSNull的解决方案是在NSNull上创建一个类别,在该类别中我定义inte

  • 问题内容: 我无法终生弄清楚自己在做什么错。似乎应该很简单,因为我找不到其他人遇到这个问题,但是我不知道要通过javascript(jQuery)将基本数据发送到PHP并对其进行解码。为了简单起见,这就是我所拥有的: JAVASCRIPT 和我的PHP文件 我正在写的文件最终没有任何内容。如果我这样做: 我得到了一个带有单词test的文件,但是无论我做什么,我都没有得到发送的json数据。 有人可

  • 问题内容: 我得到我的iOS应用程序错误。我尝试根据其他类似主题中提到的答案解决问题,但失败了。请查看下面的代码,并为此提供帮助。 谢谢 问题答案: 这样写选择器。 Swift 2.3或更低版本。 迅捷3 注意: 一种建议是面糊方法名称始终以小写而不是大写开头。因此,如果您使用而不是,那就更糟了。

  • 问题内容: 为什么在下面的代码中将数据发送为JSON格式而不是? 问题答案: 因为您既未指定请求内容类型,也未指定正确的JSON请求。这是发送JSON请求的正确方法: 注意事项: 使用此方法将javascript对象转换为本地和内置于现代浏览器中的JSON字符串。如果要支持较旧的浏览器,则可能需要包含json2.js 使用属性指定请求内容类型,以便向服务器指示发送JSON请求的意图 该属性用于服务

  • 问题内容: 我是Web服务的新手,正在尝试使用python脚本发送以下基于JSON的请求: 如果我将以上内容粘贴到浏览器中,它将按预期工作。但是,我正在努力从Python发送请求。以下是我正在尝试的: 如何将apikey数据添加到请求中? 谢谢! 问题答案: 代替使用urllib2,您可以使用request。这个新的python lib确实写得很好,并且使用起来更加简单直观。 要发送json数据,

  • 问题内容: 我有这个json数据: 使用php我如何发送此发布请求? 问题答案: 不 使用任何外部依赖项或库: $ response 是一个对象。可以像往常一样访问属性,例如 $ response- > … 其中 $ data 是包含 数据 的数组: 警告 :如果在php.ini 中将 allow_url_fopen 设置设置为 Off ,则此方法将无效。