Когда удаляются @SessionAttributes в SpringMVC? (С примером кода)

При каких именно обстоятельствах @SessionAttributes очищается? Я'Мы обнаружили некоторое запутанное поведение при попытке использовать две модели на странице.

Когда я делаю GET, а затем POST, используя этот контроллер ...

@Controller
@RequestMapping("/myPage*")
@SessionAttributes(value = {"object1", "object2"})
public class MyController {

  @RequestMapping(method = RequestMethod.GET)
  public String get(Model model) {
      model.addAttribute("object1", new Object1());
      model.addAttribute("object2", new Object2());
      return "myPage";
  }

  @RequestMapping(method = RequestMethod.POST)
  public String post(@ModelAttribute(value = "object1") Object1 object1) {
      //do something with object1
      return "myPage";
  }
}

... объект2 очищается от модели. Он больше не существует как @SessionAttribute и не может быть доступен на моей странице просмотра.

Однако, если сигнатура второго метода изменена на это ...

public String post(@ModelAttribute(value = "object1") Object1 object1,
                   @ModelAttribute(value = "object2") Object2 object2) {

... тогда object2 не очищается от модели и доступен на моей странице просмотра.

Javadoc для @SessionAttributes говорит:

... атрибуты будут удалены, как только обработчик укажет на завершение сеанса разговора.

Но я неЯ не вижу, как я указал завершение сеанса разговора в первом примере, но не во втором.

Кто-нибудь может объяснить это поведение или это ошибка?

Ответы на вопрос(2)

Ваш ответ на вопрос