konto usunięte

Temat: Atrybuty sesyjne w Spring MVC

Piszę projekt w Springu MVC i używam atrybutów sesyjnych ("sessionAttributes") definiowanych w kontrolerach. Problemem jest to, że te atrybuty istnieją w sesji http użytkownika nawet jeżeli klient nie korzysta już z nich.
Oczywiście jest na to sposób, mianowicie na końcu metody obsługującej żądanie POST możemy manualnie go skasować http://stackoverflow.com/questions/18209233/spring-mvc...
Jednak to rozwiązanie nie jest dobre, jeżeli ktoś stosuje post/redirect/get. Atrybut sesyjny jest usuwany i tworzony na nowo.
Czy ktoś korzystający z tej strategii doszedł jak skutecznie czyścić atrybuty?

Co prawda mam pewną metodę czołgową, może jeżeli nikt nie znalazł lepszego, zostanie dla potomnych, ale wierzę, że coś lepszego da się wykrzesać...

MIanowicie podstawą usuwania niepotrzebnych atrybutów sesyjnych jest własny interceptor, który na metodzie postHandle kasuje nieużywane atrybuty. Skąd interceptor ma wiedzieć, które z listy atrybutów sesyjnych są nieużywane? Do klas pełniących rolę DTO/form implementujemy mały interfejs w którym forma musi zaimplementować i podać kolekcję widoków, na których jest używana forma. A w Interceptorze metoda wygląda tak:


/**
* Usuwa z widoku niepotrzebne (nieużywane) sessionAttributes.
* O tym, czy dany sessionAttribute nie jest użwany, decyduje nazwa widoku, do którego jest kierowany model.
* @param request
* @param model
*/
private void deleteUnusedSessionAttributes(HttpServletRequest request,
ModelAndView model) {
HttpSession session = request.getSession(false);
if(session!=null){
for (Enumeration<String> e = session.getAttributeNames(); e.hasMoreElements(); ) {
String attribName = e.nextElement();
Object attribValue = session.getAttribute(attribName);
if(attribValue instanceof IForm){
if(!((IForm)attribValue).getViewNames().contains(model.getViewName())){
session.removeAttribute(attribName);
}
}
}
}
}

Oczywiście zdaję sobie sprawę, że to jest rozwiązanie czołgowe, w momencie przenoszenia widoku/zmiany nazwy, muszę pamiętać o tym, by zmieniać metodę "getViewNames()" w DTO. Dlatego pytam, czy macie coś lepszego...