Как установить значения в сессии?
Если я получаю пустую сессию, мне нужно настроить некоторые значения для воспроизведения класса действий. Итак, вот метод
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");
}