我正在帮助维护我们使用DropWizard的应用程序,这很不错。
我想设置一个cookie,然后仍然返回视图。
我看到有人提到这种方法:
回应r = 。javax.ws.rs.core.Response.ok()的cookie(COOKIE_HERE).entity(视图).build();
返回r;
但要使其工作,您必须返回“Response”对象,而不是视图。
有没有这样做,能够返回视图而不是响应?我知道我可以使用HttpServletResponse来设置cookie,但如果可能的话,我更愿意使用视图或响应对象来避免额外的上下文。
答案 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();
}