2014-09-17 5 views
0

Для научных и тестированияSpring MVC, проверяя содержание @SessionAttributes до и после status.setComplete()

У меня есть следующие:

@Controller 
@RequestMapping(value="/deportista") 
@SessionAttributes(value={"deportistaRegistrar", "deportistaActualizar", "collections"}) 
public class DeportistaController { 

Значения для каждого ключа, назначенного в @SessionAttributes заселены позже

Я хочу знать, как я могу проверить данные, сохраненные в весенней сессии через @SessionAttributes

у меня есть три- ред

@RequestMapping(value="/{id}/actualizar.htm", method=RequestMethod.POST) 
public String actualizarPerson(@Validated @ModelAttribute("deportistaActualizar") Deportista deportista, 
          BindingResult result, 
          SessionStatus status, 
          HttpSession session){ 

    ... 
    logger.info("actualizarPerson - Before status.setComplete();"); 
    checkHttpSession(session); 
    status.setComplete(); 
    logger.info("actualizarPerson - After status.setComplete();"); 
    checkHttpSession(session); 
    ... 

} 

private void checkHttpSession(HttpSession session){ 

    logger.info("checkHttpSession"); 

     Enumeration<String> enumSession = session.getAttributeNames(); 
     while (enumSession.hasMoreElements()) { 
     String attributeName = enumSession.nextElement(); 
     logger.info("{}", attributeName); 
     Object object = session.getAttribute(attributeName); 
     if(object==null) 
      logger.info("{} is null", attributeName); 
     else 
      logger.info("{} is NOT null", attributeName); 
     }  
} 

Даже когда status.setComplete(); была вызвана или казнены я вижу одни и те же ключи и значения, как не пустой или удалить, практически тот же результат до вызвать status.setComplete();. Итак, чего-то не хватает или неправильно.

Для исследований и испытаний, как я мог видеть ключи/данные до и после выполнения status.setComplete();? Конечно, если после status.setComplete(); должно быть пусто или не существует, и этого не происходит, как ожидается.

Я прочитал, как ссылка следующее: Understanding Spring MVC Model and Session Attributes

ответ

1

The Javadoc for SessionStatus состояний

Простой интерфейс, который может быть введен в методы обработки, что позволяет им сигнал, что их обработка завершения сессии , Вызывающий обработчик затем может следить за с соответствующей очистки, [...]

SessionStatus фактически не имеет какой-либо связи с подстилающей HttpSession. Он просто действует как флаг. Компонент, который вызвал ваш метод обработчика, передав в аргументе SessionStatus, после вызова вызовет SessionStatus и удалит атрибуты, если потребуется.

+0

Только то, что я думал. Он обрабатывается Spring после завершения выполнения метода обработчика –

Смежные вопросы