PageFlowScope
Если вы не планируете использовать несколько областей потоковой передачи, следующую запись в trinidad-config.xml
можно изменить
<page-flow-scope-lifetime>1</page-flow-scope-lifetime>
Это будет контролировать число org.apache.myfaces.trinidadinternal.application.PageFlowScope
сохраненов сеансе.
VIEW_CACHE
Если не планируется использовать VIEW_CACHE
, то после init params
в web.xml
можно настроить минимальное значение.
<context-param>
<param-name>org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS</param-name>
<param-value>1</param-value>
</context-param>
<context-param>
<param-name>
org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION
</param-name>
<param-value>1</param-value>
</context-param>
Это сохранит контроль над числом org.apache.myfaces.trinidadinternal.application.VIEW_CACHE
, сохраненным в сеансе
trinidadinternal.Change
Я не смог найтиспособ избежать этого.
Завершено с помощью следующего метода для очистки
@SuppressWarnings("unchecked")
public static Map<String, Object> getSessionMap() {
FacesContext context = FacesContext.getCurrentInstance();
return context.getExternalContext().getSessionMap();
}
private void clearMyfacesSessionAttributes() {
RequestContext requestContext = RequestContext.getCurrentInstance();
requestContext.getPageFlowScope().clear();
Map<String, Object> sessionMap = getSessionMap();
Set<Map.Entry<String, Object>> entrySet = sessionMap.entrySet();
for (Map.Entry<String, Object> entry : entrySet) {
String key = entry.getKey();
if(key.contains("org.apache.myfaces.trinidadinternal.application.VIEW_CACHE")
|| key.contains("org.apache.myfaces.trinidadinternal.application.PageFlowScope")
|| key.contains("org.apache.myfaces.trinidadinternal.Change"))
{
sessionMap.remove(key);
}
}
}