2013-06-30 3 views
2

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

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"); 
} 
+0

Итак, каков тип возврата вашего getSession. вы имеете в виду HttpSession? – pikrut

ответ

0
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"); 
} 

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

0

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

Таким образом, вы можете сделать это:

public SearchFilters getFilters() { 

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

    return (SearchFilters) getSession().getAttribute("Filters"); 
} 
+1

Если OP использует SessionAware, сеанс - это карта, а не HttpSession. ОП не предоставил достаточно подробностей. –

+0

Хорошо, Дейв, пропустил это. Во всяком случае, другой ответ покрыл это. Спасибо. – Jops

Смежные вопросы