我認爲這個問題可能與http chunking有關。 解決方案是增加響應緩衝區大小。 之後,cookies將被正確設置並且Flash Scope也可以工作。
使用此代碼:
public class FlashScopeFixerFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// Below line: response.getWriter() must be invoked to buffer size setting work. Just DO NOT touch this!
response.getWriter();
HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper((HttpServletResponse) response);
wrapper.setBufferSize(10000000);
chain.doFilter(request, wrapper);
}
@Override
public void init(FilterConfig arg0) throws ServletException {}
@Override
public void destroy() {}
}
而且在web.xml:
<filter>
<filter-name>FlashScopeFixerFilter</filter-name>
<filter-class>dk.sd.medarbejderdata.common.FlashScopeFixerFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>FlashScopeFixerFilter</filter-name>
<url-pattern>*.xhtml</url-pattern>
</filter-mapping>
這確實意味着Flash在Mojarra仍然被破壞。你正在使用哪個Mojarra版本? – BalusC
它可能與[this]相關(http://stackoverflow.com/questions/17668986/exception-about-flash-with-jsf-2-2-1)? –
可能是[JSF-2896](https://java.net/jira/browse/JAVASERVERFACES-2896)。我仍然在Mojarra-2.2.5中看到這一點,在複雜頁面中使用Post-Redirect-Get和Omnifaces的addFlash()。 – mabi