我知道下面的“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";
}
答案 0 :(得分:3)
通过@SessionAttributes
配置的会话属性旨在作为模型属性访问,而不是直接调用Session
的方法,因此它们的名称是自动从模型属性名称生成的。
默认情况下,会话属性名称与模型属性名称相同,因此您可以session.getAttribute("pet")
访问它(请参阅DefaultSessionAttributeStore
)。