【发布时间】:2014-02-23 00:53:18
【问题描述】:
当我使用 Omnifaces GzipResponseFilter(仅在 Glassfish 中)时尝试使用 h:commandLink 在 JSF 操作中重定向页面时出现错误。
异常:java.lang.IllegalStateException:当前状态 = FLUSHED,新状态 = CODING_END
环境 玻璃鱼 3 Omnifaces 1.7 (GzipResponseFilter) 莫哈拉 2.1.27 JDK 6
web.xml
<filter>
<filter-name>gzipResponseFilter</filter-name>
<filter-class>org.omnifaces.filter.GzipResponseFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>gzipResponseFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
MyBean.doAction()
Faces.redirect("anotherPage.jsf");
page.xhtml
<h:commandLink action="#{myBean.doAction()}">Click</h:commandLink>
这个问题只发生在 Glassfish 中,我在 Tomcat 中测试过,它可以工作。
如果我删除 GzipResponseFilter 声明,则重定向在两台服务器上都可以正常工作。
您知道这是 Omnifaces 上的错误还是我的代码中的错误? 提前致谢。
堆栈跟踪
java.lang.IllegalStateException: Current state = FLUSHED, new state = CODING_END
at java.nio.charset.CharsetEncoder.throwIllegalStateException(CharsetEncoder.java:951)
at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:537)
at sun.nio.cs.StreamEncoder.flushLeftoverChar(StreamEncoder.java:223)
at sun.nio.cs.StreamEncoder.implClose(StreamEncoder.java:282)
at sun.nio.cs.StreamEncoder.close(StreamEncoder.java:130)
at java.io.OutputStreamWriter.close(OutputStreamWriter.java:216)
at org.omnifaces.io.ResettableBufferedWriter.close(ResettableBufferedWriter.java:98)
at java.io.PrintWriter.close(PrintWriter.java:295)
at org.omnifaces.servlet.HttpServletResponseOutputWrapper.close(HttpServletResponseOutputWrapper.java:149)
at org.omnifaces.servlet.GzipHttpServletResponse.close(GzipHttpServletResponse.java:133)
at org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:150)
at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:77)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
【问题讨论】:
-
具体是哪个GF3版本?如果有的话,尝试过更新的吗?
-
我使用的是 3.1.1 版本。我使用这个版本是因为这是我客户的环境。您如何看待这个问题?
-
在omnifaces项目上打开一个关于它的问题更好吗?
标签: jsf redirect glassfish-3 omnifaces