A principal pesquisa deste artigo é o conteúdo relevante do Spring Learning @SessionAttributes, como segue.
Por padrão, o escopo dos atributos no ModelMap é o nível de solicitação, ou seja, quando a solicitação é concluída, os atributos no ModelMap serão destruídos. Se você deseja compartilhar propriedades no ModelMap em várias solicitações, deve transferir suas propriedades para a sessão para que as propriedades do ModelMap possam ser acessadas entre solicitações.
A primavera nos permite especificar seletivamente quais propriedades no ModelMap precisam ser transferidas para a sessão para que essas propriedades também possam ser acessadas na lista de propriedades do ModelMap correspondente ao próximo atributo solicitado. Esta função é implementada rotulando a anotação @SessionAttributes na definição da classe.
Faça propriedades específicas dos objetos modelo têm um escopo de sessão
pacote com.baobaotao.web;… importar org.springframework.ui.modelmap; importar org.springframework.web.bind.annotation.sessionAttributes; @Controller @ReQuestMapping (bbtForum.do) @sessatTributes (bbt) @Contributes (BBTFAPTRAPRERTMOPRERTMOTMAPTRERTMOTMAPTRERTMAPRERTMOTMAPRERTMOTMAPRERTMOTMAPTRERTMOTMAPTRERTMOTMAPTRAPRERT (BBTFORUM.DO) @Contributes (BBTFAPTRAPRERTMOTMAPTRIBTERTROPRERT (BBTFORUM.do) A lista de atributos da sessão para que esse atributo possa acessar a classe pública BBTFORUMCONTROLLER {… @RequestMapping (params = "Method = listboardTopic") public String ListboardTopic (@RequestParam ("id") int tópica, usuário do usuário, modelo ModelMap) {BBTFORIMSL ("Meteira") int tópica, Usuário, usuário, modelo, modelo. tópica); System.out.println ("Usuário:" + User); Model.addattribute ("CurrUser", Usuário); // ②Ad uma propriedade para ModelMap Return "ListTopic";}} Adicionamos um atributo ModelMap em ②, cujo atributo é CurrUser e, em ①, colocamos o atributo chamado Curruser no ModelMap na sessão através da anotação @SessionAttributes . Portanto, podemos não apenas obter o objeto do usuário através request.getAttribute(“currUser”) e ModelMap#get(“currUser”) session.getAttribute(“currUser”) na página de visualização JSP correspondente à solicitação ListboardTopic (), mas também acessar esse atributo através session.getAttribute(“currUser”) .
Aqui, colocamos apenas o atributo de um modelo de modelo na sessão. De fato, @SessionAttributes permite que vários atributos sejam especificados. Você pode especificar vários atributos por meio de matrizes de string, como @SessionAttributes({“attr1”,”attr2”}) . Além disso ,@SessionAttributes também pode especificar o atributo ModelMap a ser sessionado através do tipo de atributo, como @SessionAttributes(types = User.class) e, é claro, várias classes também podem ser especificadas, como @SessionAttributes(types = {User.class,Dept.class}) , e também pode usar o atribuído @SessionAttributes(types = {User.class,Dept.class},value={“attr1”,”attr2”}) .
Podemos adicionar @SessionAttributes ao controlador que precisa acessar a propriedade da sessão e adicionar @ModelAttribute ao parâmetro do usuário exigido pela ação e garantir que os nomes de atributos dos dois sejam consistentes. O SpringMVC injetará automaticamente os atributos definidos por @SessionAttributes no objeto ModelMap. Ao definir a lista de parâmetros de ação, vá para o ModelMap para obter esse objeto e adicione -o à lista de parâmetros. Enquanto não chamamos setComplete() do sessionStatus, esse objeto será mantido na sessão, realizando assim o compartilhamento de informações da sessão.
@Controller @SessionAttributes ("CurrentUser") </span> classe pública GreetingController {@RequestMapping public void Hello (@modelattribute ("CurrentUser") Usuário) {// user.sayhello ()}}}}}}})O exposto acima é todo o conteúdo deste artigo sobre a análise de instância do @SessionAttributes do aprendizado da primavera. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!