передача значений между сервлетом и файлом Java

#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-компонент, который вы используете в заголовке. Это, конечно, не может получить доступ к запросу (следовательно, к сеансу), да и не должно быть на самом деле. Что вы, вероятно, захотите сделать, так это преобразовать его в библиотеку тегов, если хотите, чтобы она имела доступ к запросу / сеансу.