如何在DropWizard视图上设置cookie并仍然返回View?

时间:2014-02-21 20:35:45

标签: java cookies response dropwizard

我正在帮助维护我们使用DropWizard的应用程序,这很不错。

我想设置一个cookie,然后仍然返回视图。

我看到有人提到这种方法:

  

回应r =   。javax.ws.rs.core.Response.ok()的cookie(COOKIE_HERE).entity(视图).build();

     

返回r;

但要使其工作,您必须返回“Response”对象,而不是视图。

有没有这样做,能够返回视图而不是响应?我知道我可以使用HttpServletResponse来设置cookie,但如果可能的话,我更愿意使用视图或响应对象来避免额外的上下文。

2 个答案:

答案 0 :(得分:7)

这是否符合您的要求(使用io.dropwizard 0.7.1):

@GET
@ExceptionMetered
@Path("/path")
@Produces(MediaType.TEXT_HTML)
public Response demoSetCookie()
{
    Cookie cookie = new Cookie("testNameCookie", "testValueCookie");
    NewCookie cookies = new NewCookie(cookie);
    return Response.status(Status.OK).type(MediaType.TEXT_HTML).entity(view).cookie(cookies)
                    .build();
}

答案 1 :(得分:1)

我只是想在列表中添加另一个选项 - 因为我认为它的略微更清洁......

@GET
@ExceptionMetered
@Path("/path")
@Produces(MediaType.TEXT_HTML)
public Response demoSetCookie(@Context HttpServletResponse response)
{
    Cookie cookie = new Cookie("cookiemonster", "wannacookie");
    response.addCookie(cookie);
    return new MyViewResource();
}