2015-10-14 2 views
0

У нас есть JSF1.2 Web-приложения с использованием Tomahawk с STATE_SAVING_METHOD набором на «клиента».переходные члены Java не сбрасываются, когда восстанавливаются через т: saveState и javax.faces.STATE_SAVING_METHOD установлен на сервер

Мы часто используем <t:saveState> для хранения содержимого компонента в течение более длительного времени, чем один запрос. Для того, чтобы минимизировать количество сохраненных данных, мы исключаем некоторые члены боба, которые сохраняются с помощью ключевого слова transient:

public class MyBean implements Serializable { 
    private String firstValue; 
    private transient String notSerializedValue; 
} 

Когда этот компонент восстанавливается через <t:saveState>, член firstValue будет заполнена с исходным значением , член notSerializedValue будет сброшен на null;

Когда я установить STATE_SAVING_METHOD к server, член фасоли notSerializedValue не сбрасывается, но также заполнена исходное значение, когда восстановлена ​​с помощью <t:saveState>.

Кажется, что фасоль не сериализована и десериализована, когда STATE_SAVING_METHOD является server.

Мой вопрос:

Могу ли я заставить JSF сбросить мои transient боб-членов null, когда STATE_SAVING_METHOD является server?

+0

Я забыл упомянуть, что использую JSF SunRI. Здесь: http://www.coderanch.com/t/210921/JSF/java/STATE-SAVING-METHOD Я читал: «Сегодня, глядя на источник MyFaces, я был удивлен, увидев, что он« сериализуется »даже при сохранении режим сеанса ... «Будет ли это работать, если я использовал реализацию MyFaces? – Gio

ответ

0

Я нашел решение:

Использование Sun-Ri можно заставить ApplicationServer сериализовать управляемые бобы с контекстным-параметром com.sun.faces.serializeServerState в web.xml. Я проверил его, а затем мои временные члены были сбросить в каждом запросе:

<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>