3 回答

TA貢獻1821條經驗 獲得超5個贊
創建一個 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
添加回答
舉報