2014-02-21 22 views
0

我正在幫助維護一個應用程序,我們使用DropWizard,這很好。如何在DropWizard視圖上設置cookie並仍然返回View?

我想設置一個cookie,並返回視圖仍然。

我看到人們提到這個方法:

響應R = javax.ws.rs.core.Response.ok()餅乾(COOKIE_HERE).entity(圖).build();

return r;

但要得到這個工作,你必須返回「響應」對象,而不是視圖。

有沒有辦法做到這一點,並能夠返回一個視圖,而不是一個響應?我知道我可以使用HttpServletResponse來設置cookie,但如果可能的話,我寧願使用view或response對象來做,以避免出現額外的上下文。

回答

6

這是否符合您的要求(與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(); 
} 
+0

感謝您的反饋 - 這看起來不錯! –

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(); 
} 
相關問題