2013-07-20 104 views
10

私はpage1.jsfを持っています。このオブジェクトにはELFlashにオブジェクトを置くcommandButtonがあり、 page2.jsf。このページでは、ELFlashでオブジェクトを回復します。すべてうまく動作します。ユーザーがpage2.jsfのまましかし、すべてのAJAX要求のために、Tomcatは、この警告メッセージを示していますJSFからの警告の取得:フラッシュの送信Cookieを設定しようとするまでに応答がすでにコミットされていました。

20/07/2013 09:43:37 com.sun.faces.context.flash.ELFlash setCookie 
WARNING: JSF1095: The response was already committed by the time we tried to set the outgoing cookie for the flash. Any values stored to the flash will not be available on the next request. 

それが本当に何を意味するのでしょうか?

+2

これは、MojarraでFlashがまだ壊れているということです。どのMojarraバージョンを使用していますか? – BalusC

+0

[this](http://stackoverflow.com/questions/17668986/exception-about-flash-with-jsf-2-2-1)と関連していますか? –

+0

[JSF-2896](https://java.net/jira/browse/JAVASERVERFACES-2896)にすることができます。私はまだ、Mojarra-2.2.5で、Post-Redirect-GetとOmnifacesの 'addFlash()'を複雑なページで使っています。 – mabi

答えて

-1

フラッシュは名前がjsfのライフサイクルの間の一時的なコンテナのコンセプトの一種であることを示唆しているはずです。ポイントは次のとおりです:フラッシュに保存されたオブジェクトは、彼が遭遇する次のビューでプロモーションされます(jsfがmvcに従うことを忘れないでください)。

私はそれがなぜこのようなエラーを起こすのかと思います。それはmojarraとは直接関係していません。

+0

あなたは具体的な質問に全く答えていません。理想的には、これらの警告メッセージは表示しないでください。あなたの答えには、それに対する解決策はありません。 – BalusC

+0

「次のリクエストでフラッシュに保存された値は使用できません。」 :o – LMG

+0

これはただの警告メッセージで、予想される動作を伝えます。つまり、警告に表示される理由はなく、私の質問は、なぜこれが起きているのかということです。 –

3

httpチャンクに関連している可能性があります。 解決策は、応答バッファサイズを増やすことです。 そのクッキーが正しく設定され、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内:このコード

使用する代わりに@Rafal Kの答えで述べたようにフィルターを使用しての

<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> 
+0

これは現在私たちのために働く唯一のものです。私たちのログはmojarraのこの厄介な警告でいっぱいでした2.2.14 – Steve

3

、あなたはまたして、応答バッファサイズを増やすことができますコンテキストパラメータを設定するweb.xml

<!-- increase buffer size to avoid JSF1095 errors --> 
<context-param> 
    <param-name>javax.faces.FACELETS_BUFFER_SIZE</param-name> 
    <param-value>131072</param-value> 
</context-param> 

サイズはバイト単位ですあなたの最大ページよりも大きくする必要があります。右クリックしてView Page Infoを選択することで、Firefoxでページのサイズを簡単に確認できます。

関連する問題