私は JSF 2.0 の Flash スコープ (他のスコープのような「スコープ」ではないことはわかっていますが、「スコープ」と呼ばれることが多い) と格闘してきました。(モハラ)
私の問題は、フラッシュ Cookie がビューのパスにバインドされており、オブジェクトをフラッシュに配置していることです。
これにより、同じアプリケーション内の別のパスにリダイレクトした後、オブジェクトが使用できなくなります。リダイレクト ナビゲーションの反対側で文字列 (およびおそらくオブジェクト) を使用できるようにする必要があります。
これをオーバーライドし、次のラッパーに@WebFilter
置き換える目的で実装しました。ServletResponse
private class ResponseWrapper extends HttpServletResponseWrapper{
private final String path;
public ResponseWrapper(HttpServletResponse response, String contextpath) {
super(response);
this.path = contextpath;
}
@Override
public void addCookie(Cookie cookie) {
// Hardcoded name from jsf-impl # com.sun.faces.context.flash.ELFlash
final String FLASH_COOKIE_NAME = "csfcfc";
if (cookie.getName().equals(FLASH_COOKIE_NAME)){
cookie.setPath(path);
}
super.addCookie(cookie);
}
}
実際には、このラッパーは、アプリケーションの context-root にバインドされるように flash-cookies を変更します。
私の質問は、これが私が監督していない他の問題を引き起こすかどうかです. そもそもビューのパスにバインドする必要がある
理由を理解できません。Flash