Я пытаюсь передать переменные JSF сервлету, и я нашел способ сохранить эти переменные в сеансе, а затем получить к ним доступ в сервлете. Он отлично работал в моих первых тестах, но теперь, по понятным причинам, просто не работает.
Теперь сервлет не может найти сеанс, он возвращает ноль. Как будто это не было достаточно странно, он возвращает ноль только тогда, когда я использую Firefox и Chrome, если я использую IE, он возвращает сессию правильно. Я уже перезапустил все браузеры для перезапуска сеансов, но он все еще не работает.
Моя проблема: мне нужно передать атрибут в моем составном компоненте сервлету, вот что я делаю:
...
<composite:implementation>
<f:metadata>
<f:event type="preRenderView" listener="#{Plupload.inicialize(cc.attrs.value, cc.attrs.servletPath,cc.attrs.runtimePreferences,cc.attrs.maxFileSize,cc.attrs.resizingWidth, cc.attrs.resizingHeight,cc.attrs.resizingQuality, cc.attrs.allowedTypes)}" />
</f:metadata>
...
</composite:implementation>
Plupload является компонентом SessionScoped, с его методом "initialize" я передаю все необходимые атрибуты сеансу.
В сервлете я делаю следующее:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession(false);
if (session == null) System.out.println("null session");
plupload = (Plupload) session.getAttribute("Plupload");
...
}
В результате выполнения doPost на экране выводится «нулевая сессия», а исключение NullPointerException выдается строкой:
plupload = (Plupload) session.getAttribute("Plupload");
Конечно, если я не выполняю это в IE.
Заранее спасибо за любой ответ.