сколько значений доступно для атрибута области в элементе действия файла struts-config.xml - PullRequest
7 голосов
/ 17 января 2011

Сколько значений доступно для атрибута "scope" в элементе "action" файла struts-config.xml, отличном от "request" и "session"?

<action name="loginform" path="/bkplogin" scope="?" type="org.springframework.web.struts.DelegatingActionProxy">

1 Ответ

9 голосов
/ 17 января 2011

Существует только два возможных значения для атрибута контекста: запрос и сессия , как указано в 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 - это общая структура, она не охватывает все мыслимые или немыслимые случаи, она охватывает большинство сценариев нормального использования, для которых запрос и сеанс - это все, что вам когда-либо понадобится.

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