小编yve*_*lem的帖子

Jersey可以生成List <T>但不能Response.ok(List <T>).build()?

泽西1.6可以生产:

@Path("/stock")
public class StockResource {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Stock> get() {
        Stock stock = new Stock();
        stock.setQuantity(3);
        return Lists.newArrayList(stock);
    }
}
Run Code Online (Sandbox Code Playgroud)

但不能做同样的事情:

@Path("/stock")
public class StockResource {
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response get() {
        Stock stock = new Stock();
        stock.setQuantity(3);
        return Response.ok(Lists.newArrayList(stock)).build();
    }
}
Run Code Online (Sandbox Code Playgroud)

给出错误: A message body writer for Java class java.util.ArrayList, and Java type class java.util.ArrayList, and MIME media type application/json was not found

这可以防止使用HTTP状态代码和标头.

java json jaxb jersey generic-list

24
推荐指数
2
解决办法
3万
查看次数

一步破坏集合中的骨干模型?

这两个步骤是否必须删除模型?

var model = collection.get(id);
model.destroy();
collection.remove(model);
Run Code Online (Sandbox Code Playgroud)

当从模型中删除模型时,是否有办法销毁模型?

collections model backbone.js

20
推荐指数
1
解决办法
3万
查看次数

创建自定义Jackson注释

一个项目需要结合使用以下杰克逊注释的组合.那么,有没有办法创建另一个注释,以避免丑陋的复制/粘贴:

public class A {
    @JsonProperty("_id")
    @JsonSerialize(using=IdSerializer.class)
    @JsonDeserialize(using=IdDeserializer.class)
    String id;
}

public class B {
    @JsonProperty("_id")
    @JsonSerialize(using=IdSerializer.class)
    @JsonDeserialize(using=IdDeserializer.class)
    String id;
}

public class C {
    @CustomId // don't repeat that configuration endlessly
    String id;
}
Run Code Online (Sandbox Code Playgroud)

更新:我试过这个,没有成功:-(

@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotationsInside
@JsonProperty("_id")
@JsonSerialize(using=IdSerializer.class, include=JsonSerialize.Inclusion.NON_NULL)
@JsonDeserialize(using=IdDeserializer.class)
public @interface Id {}

public class D {
    @Id
    private String id;
}
Run Code Online (Sandbox Code Playgroud)

java annotations marshalling jackson

13
推荐指数
1
解决办法
6862
查看次数

使用web.xml配置Grizzly

我可以用灰熊开始并用以下几行在其上部署Jersey webservices.

protected HttpServer create() throws Throwable {
  ResourceConfig rc = new PackagesResourceConfig("com.resource", "com.provider");
  HttpServer server = GrizzlyServerFactory.createHttpServer(uri, rc);
  return server;
}
Run Code Online (Sandbox Code Playgroud)

但有没有办法加载web.xml而不是ResourceConfig

<web-app>
  <servlet>
    <servlet-name>Jersey</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>com.sun.jersey.config.property.packages</param-name>
      <param-value>com.resource, com.provider</param-value>
    </init-param>
  </servlet>

  <servlet-mapping>
    <servlet-name>Jersey</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

web.xml jersey grizzly

12
推荐指数
1
解决办法
2664
查看次数

将servlet请求转发给另一台服务器

Java Servlet API可以将请求转发到同一服务器(相同的主机:端口)中的另一个路径.但是,转发到另一个主机:端口 - 就像代理做 - 是另一个故事.

我试图用Jersey Client做这件事,将ServletRequest - 方法,标题,mediatype和body调整到Jersey ClientRequest(使用不同的基础uri),进行调用,并调整Jersey ClientResponse - 方法,标题, mediatype和body - 到ServletResponse.

手动调整这些对我来说似乎不对.

是不是有纯粹的Servlet API解决方案?或者是一个HTTP客户端,能够在更改host:port时来回调整请求?

servlets http jersey portforwarding

11
推荐指数
2
解决办法
2万
查看次数

如何在Jersey ContainerResponseFilter中获取资源注释

Jersey提供两个类来与资源上的注释进行交互:

ResourceFilterFactory定义了一个create方法(实现),AbstractMethod该方法可以访问方法和类注释.

ContainerRequestFilter和ContainerResponseFilter定义了一个filter接受请求/响应的方法(实现),但这些方法只能访问被调用的方法注释,而不是第一类.

我正在尝试实现一个CacheControl注释,它以下列方式定义HTTP缓存头.

@Path("/path")
@CacheControl(maxAge = 172800)
public class Resource
{   
    @GET
    @Path("/{id}")
    @CacheControl(mustRevalidate = true)
    public Response get(@PathParam("id") Long id)
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我不想为我的应用程序中定义的每个REST方法创建一个新的CacheControlFilter.

public class FilterFactory implements ResourceFilterFactory
{    
    @Override
    public List<ResourceFilter> create(AbstractMethod method)
    {
        List<ResourceFilter> filters = newArrayList();
        if (isAnnotationPresent(method, CacheControl.class))
            filters.add(new CacheControlFilter(method));
        return filters;
    }

    private boolean isAnnotationPresent(AbstractMethod method, Class<? extends Annotation> clazz)
    {
        return method.isAnnotationPresent(clazz) || method.getResource().isAnnotationPresent(clazz);
    }
} …
Run Code Online (Sandbox Code Playgroud)

java rest annotations http jersey

10
推荐指数
1
解决办法
6844
查看次数

将Facebook广告系列目标与洞察操作类型相匹配

Facebook的广告中有一个客观这里列出(PAGE_LIKES,VIDEO_VIEWS,等).

Facebook的见解列表中的用户行为这里列出(like,video_view,等,但也有一些缺失,unlike例如).

问题是:客观和行动不匹配.例如,有一个PAGE_LIKES目标和一个like动作.

Facebook电源管理器中有一个"结果"列,为每个广告系列提供与广告系列目标匹配的用户操作计数(在下图中获得992like).

电源管理器

似乎在洞察中没有这样的东西(在api和sdk中都没有),那么识别广告系列转换计数的正确方法是什么(在电源管理器中命名为"结果")?

我们必须手动维护PAGE_LIKES <-> like吗?如果是这样,那么正确的映射是什么?

facebook facebook-graph-api facebook-ads-api facebook-php-sdk facebook-marketing-api

9
推荐指数
1
解决办法
1141
查看次数

使用动态URL进行Backbone Collection

创建Collection时,Backbone会为所有人配置一次url.有没有办法在以后更改此URL?

以下示例显示2 POST /product和2 POSTat /product/id/stock.最后一个POST不起作用,Backbone连接id并尝试PUT它,但我不知道为什么.

products.create({ name: 'American Pastoral', price: 8 });
products.create({ name: 'The Grapes of Wrath', price: 10 });

products.each(function(product) {
    var id = parseInt(product.get('id'));
    stocks.setId(id);
    stocks.create({ id: id, quantity: 12 });
}
Run Code Online (Sandbox Code Playgroud)

库存集合:

Backbone.Collection.extend({
    url: function() {
        return this.url;
    },
    parse : function(resp) {
        return resp.stock;
    },
    setProduct: function(id) {
        this.url = '/product/'+id+'/stock';
    }
});
Run Code Online (Sandbox Code Playgroud)

不行.

collections url backbone.js

7
推荐指数
1
解决办法
8596
查看次数

在骨干中获取/收集/ id而不加载整个集合

有没有办法加载Backbone集合的单个实体(从服务器)?

Backbone.Collection.extend({
  url: '/rest/product'
});
Run Code Online (Sandbox Code Playgroud)

以下代码可以加载整个集合collection.fetch()但是如何加载单个模型?Backbone的文档清楚地表明GET可以完成,/collection[/id]但不能如何完成.

collections model backbone.js

7
推荐指数
2
解决办法
1万
查看次数

禁用Jackson映射器以获取特定注释

使用Jackson,可以轻松禁用给定的所有注释ObjectMapper.有没有办法只禁用一个给定的注释?

// disable all
ObjectMapper mapper = new ObjectMapper()
mapper.disable(MapperFeature.USE_ANNOTATIONS);

// disable one?
ObjectMapper mapper = new ObjectMapper()
mapper.disable(@JsonIgnore);
Run Code Online (Sandbox Code Playgroud)

使用@JacksonAnnotationsInside,我已经定义了一个自定义杰克逊注释,我只希望它在某些情况下使用.

java json annotations jackson

6
推荐指数
1
解决办法
4233
查看次数