2015-08-21 5 views
0

ребята.Калитки: макет атрибута HttpSession

Я следующий код для моей HTTP сессии в Калитка на основе применения:

public static HttpServletRequest getHttpServletRequest() { 
Request request = RequestCycle.get().getRequest(); 
if (request != null && request instanceof WebRequest) return 
HttpServletRequest) request.getContainerRequest(); 
return null; 
} 
public static SessionObject getSessionObject() { 
HttpServletRequest request = getHttpServletRequest(); 
HttpSession session = request == null ? null : request.getSession(); 
SessionObject so = session == null ? null : (SessionObject) session.getAttribute("so"); 
if (so == null) { 
logger.warn("SessionObject is not found in HttpSession!"); 
} 
return so; 
} 

Объект сеанса инициализируется в JSP, как следующее:

jsp:useBean id="so" class="package.SessionObject" scope="session" 

Я хотел бы издеваться этот атрибут так в тестах Wicket.
Пытался сделать следующее:

bind(SessionObject.class).toInstance(EasyMock.createMock(SessionObject.class)); 

также

tester = new WicketTester(new MockApplication() { 
@Override 
public Session newSession(Request request, Response response) { 
final Session session = super.newSession(request, response); 
session.setAttribute("so", EasyMock.createMock(SessionObject.class)); 
return session; 
} 
}); 

Но когда я пытаюсь вызвать метод, как:

init(){ 
a = getSessionObject().getA(); 
} 

getSessionObject() возвращает нуль, поскольку не существует атрибут с именем "так".

Не могли бы вы помочь мне высмеять этот атрибут в сеансе?

ответ

0

Вы можете упростить свои вспомогательные методы до: Session.get().getAttribute("so").

Ваш код, который пишет значение, уже использует Session#setAttribute().

Попробуйте привязать сессию: Session#bind(). Если связанный Wicket не создаст новый экземпляр сеанса для каждого запроса. Однажды связанная Wicket приобретет HttpSession и сохранит сессию Wicket's в нее (как атрибут).

Если это не поможет, установите точку останова в методах Session set/getAttribute() и посмотрите, что произойдет.

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