Запись переменной в область запроса JSP не работает - PullRequest
1 голос
/ 15 декабря 2009

У меня проблема с тем, что я пытаюсь установить переменную на странице JSP, которая должна быть доступна для всех других страниц, обслуживающих этот запрос.

<c:set value="foo" scope="request" var="bar" />

Однако, когда я пытаюсь прочитать переменную с другой страницы (основной JSP, который все собирает), она пуста. Должно ли это когда-либо случиться? Есть ли что-то, на что мне нужно обратить внимание в нашем механизме рендеринга? (Я уже написал маленькие скриптлеты, которые печатали место в памяти объекта запроса, и оно одинаково на обеих страницах.) Когда я пишу его в области действия сеанса, оно работает, но переменная должна быть сброшена для каждого запроса.

Как я могу отладить эту проблему?

Я использую Tomcat 5.5.28 (определенно не могу обновить до 6). Известно ли, что в реализации JSP есть ошибка?

1 Ответ

2 голосов
/ 15 декабря 2009

Я использую Tomcat 5.5.28 (определенно не могу обновить до 6). Известно ли, что в реализации JSP есть ошибка?

Предполагать, что ошибка является ошибкой с вашей стороны. Я обычно нахожу, что когда люди думают, что нашли ошибку в программном обеспечении, это на самом деле просто какое-то поведение, которое не соответствует их неверным предположениям о том, как все работает. Иногда ошибки обнаруживаются, но они редки. Особенно для таких вещей, как JVM, которые долгое время были в дикой природе.

От Солнца:

Область действия, в которой существует Бин и доступна переменная, названная в id. Значением по умолчанию является страница. Значения различных областей показаны ниже:

page - Вы можете использовать Бин на странице JSP с элементом или любым из статических включаемых файлов страницы, пока страница не отправит ответ клиенту или не отправит запрос в другой файл.

запрос - Вы можете использовать Бин с любой страницы JSP, обрабатывающей тот же запрос, пока страница JSP не отправит ответ клиенту или не отправит запрос в другой файл. Вы можете использовать объект запроса для доступа к Бину, например, request.getAttribute (beanInstanceName).

сеанс - вы можете использовать Бин из любой страницы JSP в том же сеансе, что и страница JSP, создавшая Бин. Бин существует на протяжении всего сеанса, и его может использовать любая страница, которая участвует в этом сеансе. Страница, на которой вы создаете Бин, должна иметь директиву <% @ page%> с session = true.

Приложение

- Вы можете использовать Бин из любой страницы JSP в том же приложении, что и страница JSP, создавшая Бин. Бин существует во всем приложении JSP, и любая страница в приложении может использовать Бин.

Я бы порекомендовал попробовать сессионный охват.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...