Как проверить, существует ли сеанс, созданный с помощью @SessionAttributes (Spring MVC) - PullRequest
0 голосов
/ 04 января 2019

Посмотрите на этот код:

@Controller
@RequestMapping
@SessionAttributes("address")
public class HomeController {

    @RequestMapping("/home")
    public String welcome(Model model) {        
            Address address = new Address();            
            model.addAttribute("address", address);         
            return "welcome";           
    }   

}

Каждый раз, когда я достигаю URL " / home ", вызывается метод welcome () , создается новый объект Адрес , добавляется в модель и сохраняется внутри сеанса с именем адресом .

Как лучше всего проверить, существует ли уже * * адрес '1016 * сеанса , чтобы избежать исключения этих строк кода?

  Address address = new Address();          
  model.addAttribute("address", address);

Я использую этот метод, но я полагаю, что есть лучший и конкретный способ сделать это, используя Функции Spring .

@RequestMapping
public String welcome(Model model, HttpServletRequest httpServletRequest) {
   Address vecchioAddress = (Address)httpServletRequest.getSession().getAttribute("address");
   if(vecchioAddress == null) {
            Address address = new Address();                
            model.addAttribute("address", address);
   }    

}

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Вы можете использовать @SessionAttribute.

public String welcome(Model model, @SessionAttribute("address") Address addres) { 
       if(address == null){
            Address address = new Address();            
            model.addAttribute("address", address); 

        }
        return "welcome";
} 
0 голосов
/ 04 января 2019

Попробуйте использовать @ SessionAttribute аннотацию для извлечения существующего атрибута из сеанса.

@RequestMapping
public String welcome(@SessionAttribute("address") Address address) {
  // something....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...