Существует только два возможных значения для атрибута контекста: запрос и сессия , как указано в DTD Struts-config:
<!--
The name of a JSP bean scope within which such a form bean may be accessed.
-->
<!ENTITY % RequestScope "(request|session)">
...
...
<!ATTLIST action scope %RequestScope; #IMPLIED>
Смотрите DTD здесь:
http://struts.apache.org/dtds/struts-config_1_3.dtd
или более читаемая документация DTD здесь:
http://struts.apache.org/1.x/struts-core/dtddoc/struts-config_1_3.dtd#action
А как насчет "Приложения" и "страницы"?
Область видимости объекта на страницах JSP может быть:
- page - доступ к объекту возможен только из той же страницы JSP, в которой он был создан;
- request - доступ к объектам, созданным с использованием области запроса, можно получить с любых страниц, обслуживающих этот запрос;
- сеанс - объект доступен со страниц, принадлежащих одному сеансу (охватывает несколько запросов одного и того же клиента, состояние сохраняется в сеансе, каждый клиент имеет свой сеанс);
- приложение - доступ к объектам из этой области можно получить с любых страниц приложения (все пользователи совместно используют одни и те же объекты в области приложения, один объект для всех пользователей).
Теперь область действия в struts-config указывает, где создавать / находить объекты ActionForm. ActionForm представляет представление объекта сервера клиентской HTML-формы.
Не имеет никакого смысла иметь форму с областью применения, потому что это будет одна форма для всех, о которой я даже не могу думать, что это будет полезно. Так что нет значения приложения для этого поля.
Теперь представьте, что у вас есть область страницы. Как это будет работать? Struts делает RequestDispatcher.forward / redirect для перехода к файлам JSP, как он собирается сохранить ActionForm в области страницы, которая по-прежнему не имеет области страницы, поскольку у нее еще нет контроль ?! Это похоже на отправку значений в метод, но вместо отправки аргументов метода вы пытаетесь напрямую создать локальные переменные в коде метода извне метода.
Таким образом, есть только два значения, которые имеют смысл: request и session . Если вы хотите что-то дополнительное, вы должны сами справиться с этим.
Struts - это общая структура, она не охватывает все мыслимые или немыслимые случаи, она охватывает большинство сценариев нормального использования, для которых запрос и сеанс - это все, что вам когда-либо понадобится.