我正在使用Mojarra 2.1.13和Primefaces 3.5开发一个非常大的JSF应用程序。最近,我遇到了获取java.lang.IllegalStateException: Cannot create a session after the response has been committed
异常的问题。我通过在FACELETS_BUFFER_SIZE
中使用context-param
增加web.xml
来清除它。尽管我不再遇到这种异常,但我对此有一些疑问:
FACELETS_BUFFER_SIZE
设置有多重要?FACELETS_BUFFER_SIZE
为我的应用程序? FACELETS_BUFFER_SIZE
表示缓冲区(例如,本例中为表格)可以达到的最大字节数。仅当PROJECT_STAGE
设置为Development时,才需要在web.xml中进行设置。
PROJECT_STAGE
设置为生产时,无需设置FACELETS_BUFFER_SIZE
,并且可以保留其默认设置(-1)。在开发中设置FACELETS_BUFFER_SIZE
可以防止数据丢失或无法正确记录甚至根本无法记录的错误。
将此参数设置为Development可以得到更好的错误消息,包括在客户端JavaScript中,但会降低性能。
同时将此参数设置为生产会关闭一些错误消息,并强调性能。
FACELETS_BUFFER_SIZE
设置为开发时在PROJECT_STAGE
中设置的值(字节)应大于最重页面的最大大小。您可以看到,如果您在firefox中打开应用程序,请在空白处单击鼠标右键,然后单击“查看页面信息”,此处显示当前页面大小。