Как установить значения в сессии?

Если я получаю пустую сессию, мне нужно настроить некоторые значения для воспроизведения класса действий. Итак, вот метод

public SearchFilters getFilters() {
 return (SearchFilters) getSession().get("Filters");
}

Я хотел бы проверить сессию, если это nullЗатем мне нужно установить некоторые значения здесь.

public SearchFilters getFilters() {
if(getSession().get("Filters").equals(null)){
---- //How to set the values and return ?
}
 return (SearchFilters) getSession().get("Filters");
}

2 ответа

Решение
public SearchFilters getFilters() {
if(getSession().get("Filters") == null){
  //How to set the values
  getSession().put("Filters", new Filters()); 
}
// and return.
 return (SearchFilters) getSession().get("Filters");
}

предполагается, что вы внедрили сеанс в действие, полученное методом getter после реализации SessionAware, Значением является объект свободной руки, который не содержит значения, но вы можете создать для него конструктор и передать значение напрямую.

getSession() вернет новый сеанс, если существующий сеанс не найден. Таким образом, вам не нужно беспокоиться о том, что это когда-либо возвращает ноль. Обратите внимание, что нет get() метод под HttpSession, это getAttribute(),

Так что вы можете сделать это:

public SearchFilters getFilters() {

    if(getSession().getAttribute("Filters") == null) {
         getSession().setAttribute("Filters", new SearchFilters());
    }

    return (SearchFilters) getSession().getAttribute("Filters");
}
Другие вопросы по тегам