3 回答
TA贡献1821条经验 获得超4个赞
创建一个 Filter
这确实 HttpServletRequest#getSession()
以前 FilterChain#doFilter()
..优点:无需更改JSF配置/代码。缺点:当您希望避免不必要的会话创建时,您自己也是如此。 打电话 ExternalContext#getSession()
带着 true
在bean的(POST)构造函数或 preRenderView
听众。优势:事实上,没什么。缺点:太无趣了。 添加名称为 com.sun.faces.writeStateAtFormEnd
和价值 false
到 web.xml
..优点:相对于#1和#2,将真正避免不必要的会话创建。 </h:form>
到达了。如果您的表单不是非常大,那么影响应该是最小的。但是,如果您的 <h:form>
在视野中起步相对较晚。这可能与#4相结合。 添加名称为 javax.faces.FACELETS_BUFFER_SIZE
以及Facelets响应缓冲区大小的值,以字节为单位(例如, 65535
),以便整个HTML输出或至少 <h:form>
(参见#3)适合响应缓冲区。有利/不利,见第3条。 添加名称为 javax.faces.STATE_SAVING_METHOD
和价值 client
到 web.xml
..优点:除非您有会话作用域bean,否则不会创建会话。它也立即解决了潜在的问题。 ViewExpiredException
案子。缺点:增加了网络带宽的使用。如果您使用的是部分状态保存,那么影响应该是最小的。
<h:form>
更新
TA贡献1843条经验 获得超7个赞
<dependency> <groupId>org.glassfish</groupId> <artifactId>javax.faces</artifactId> <version>2.1.21</version></dependency>
TA贡献1848条经验 获得超6个赞
welcome-file
web.xml
java.lang.IllegalStateException: Cannot create a session after the response has been committed
welcome-file
web.xml
添加回答
举报