我们有一个使用Tomahawk的JSF1.2网络应用程序, Select Distinct ProgramName
AVG(DATEDIFF(ss,StartDate,Enddate)) as AvgSec,
MAX(DATEDIFF(ss,TimeStart,TimeEnd))as MaxSec,
MIN(DATEDIFF(ss,TimeStart,TimeEnd))as MinSec,
Count(*) as NumberOfRuns
From ProgramExecutions WITH(NOLOCK)
Group By ProgramName
Order By AVG(DATEDIFF(ss,TimeStart,TimeEnd))DESC;
设置为“客户端”。
我们经常使用STATE_SAVING_METHOD
来保持bean的内容比一个请求更长的时间。为了最大限度地减少保存数据的数量,我们排除了使用关键字<t:saveState>
保存的bean的一些成员:
transient
当通过public class MyBean implements Serializable {
private String firstValue;
private transient String notSerializedValue;
}
重建此bean时,成员<t:saveState>
将使用原始值填充,成员firstValue
将重置为notSerializedValue
;
当我将null
设置为STATE_SAVING_METHOD
时,通过server
恢复时,bean成员notSerializedValue
不会重置,但也会填充原始值。
当<t:saveState>
为STATE_SAVING_METHOD
时,似乎未对bean进行序列化和反序列化。
我的问题:
当server
为transient
时,我可以强制JSF将我的null
bean成员重置为STATE_SAVING_METHOD
吗?
答案 0 :(得分:0)
我找到了解决方案:
使用Sun-Ri,您可以强制ApplicationServer使用web.xml中的context-parameter com.sun.faces.serializeServerState 序列化托管bean。我测试了它,然后我的瞬态成员已经在每个请求中被重置:
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.serializeServerState</param-name>
<param-value>true</param-value>
</context-param>
我还发现这个参数 org.apache.myfaces.SERIALIZE_STATE_IN_SESSION 似乎适合MyFaces,但我无法测试ist:
<context-param>
<param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>
<param-value>true</param-value>
</context-param>