#java #spring #servlets #tiles
#java #spring #сервлеты #плитки
Вопрос:
У меня есть один контроллер spring, который задает некоторые значения для запроса и показывает страницу jsp. Для части просмотра мы используем плитки. Страница результатов состоит из 3 частей: заголовка, содержимого и нижнего колонтитула jsp. В этом заголовке jsp используется файл Java, и я хочу получить доступ к атрибутам, созданным первым контроллером spring из этого файла. Есть ли какой-либо способ сделать это без использования сеанса? Когда я попробовал request.getAttribute , он выдает null. Я думаю, это потому, что это не файл сразу после установки значений запроса.
Комментарии:
1. есть ли у вас formbean для вашего представления?
Ответ №1:
Пока все выполняется в одном запросе и код контроллера выполняется перед частью просмотра, setAttribute()
должно работать. Для отладки подобных проблем используйте Filter
, который выводит URL запроса и атрибуты на консоль или в журнал.
Если эти вызовы выполняются в разных запросах, у вас есть два варианта: Сеанс и компонент Spring bean (используйте компонент session bean или вашу собственную реализацию). Я предпочитаю beans, поскольку они типобезопасны и позволяют мне отделять мой код от Servlet API, который сложно тестировать.
Комментарии:
1. Я вижу значение в фильтре
2. И ваш код просмотра выполняется до завершения фильтрации? Если это так, то кто-то удаляет значение или представление получает новый экземпляр запроса, который создается, например, другим фильтром.
Ответ №2:
Вам действительно нужно ввести некоторый код, чтобы получить кодовый ответ, но если вы не используете скриптлеты JSP, я предполагаю, что это Java-компонент, который вы используете в заголовке. Это, конечно, не может получить доступ к запросу (следовательно, к сеансу), да и не должно быть на самом деле. Что вы, вероятно, захотите сделать, так это преобразовать его в библиотеку тегов, если хотите, чтобы она имела доступ к запросу / сеансу.