使用@SessionAttributes时如何“session.getAttribute”

时间:2011-05-30 14:42:58

标签: spring spring-mvc

我知道下面的“pet”对象是使用@SessionAttributes存储到会话中的,但是我可以使用session.getAttribute吗? (例如..宠物宠物=(宠物)session.getAttribute(“宠物”))。我不确定为什么我不需要“会话密钥”。 (我们必须在使用session.setAttribute(“id”,id))

时定义密钥
    @Controller
    @RequestMapping("/editPet.do")
    @SessionAttributes("pet")
    public class EditPetFormController {

        @Autowired
        private final Clinic clinic;

        @RequestMapping(method = RequestMethod.GET)
        public String setupForm(@RequestParam("petId") int petId, ModelMap model) {
            Pet pet = this.clinic.loadPet(petId);
            model.addAttribute("pet", pet);
            return "petForm";
        }

1 个答案:

答案 0 :(得分:3)

通过@SessionAttributes配置的会话属性旨在作为模型属性访问,而不是直接调用Session的方法,因此它们的名称是自动从模型属性名称生成的。

默认情况下,会话属性名称与模型属性名称相同,因此您可以session.getAttribute("pet")访问它(请参阅DefaultSessionAttributeStore)。