2016-12-16 9 views
1

Я новичок в Struts2.Struts 2.3: Изменить область действия Beans

Я не могу найти информацию в документах Struts о облаках bean, а Struts использует область запроса по умолчанию, что не подходит для моего проекта.

Я нашел много информации об использовании области в Struts1, но все ссылки на документы недоступны.

Не могли бы вы предложить, как настроить сферу действия для классов действий?

+0

Вы можете узнать больше о областях [здесь] (http://stackoverflow.com/a/27670618/573032) –

+0

[This] (http://stackoverflow.com/a/20458850/573032) Ответ также о но (но не одобрен). Относительно вашего ответа * Struts использует область запроса по умолчанию *. –

ответ

1

Struts это front-end MVC framework.

Действия Struts2 - это контроллеры (C из MVC) и не должны использоваться в качестве компонентов; они должны вместо этого переносить bean-компоненты из базовых бизнес-слоев в View (V из MVC, например JSP).

У вас не должно быть действия с 50 атрибутами, вы должны иметь действие с несколькими атрибутами, которые являются POJO с 50 атрибутами внутри.

Для Struts2 у вас может быть все, что работает на бизнес-уровне, например Java EE (EJB 3, JPA 2, CDI и т. Д.) Со всеми его компонентами и областями, или Spring, или что-то еще.

Действия Struts2 являются потокобезопасными, инстанцируемыми по запросу, и именно так оно изучается для работы. Не пытайтесь изменить области действия, чтобы использовать их как фасоль, попытаться узнать, какие действия и как их использовать.

Sidenote: если у вас есть свободный выбор, я бы предложил Struts2 + Java EE> = 6 + Struts2-CDI-plugin + Struts2-Convention-plugin + Struts2-Json-plugin, запускаемый с Maven и созданный с помощью Архетип Maven.

+0

Благодарим вас за ответ. У меня есть Struts2 + EJB3 в проекте, и мне нужно загрузить из db некоторые данные для инициализации и использования на экране. Я не могу выполнить эту операцию каждый запрос - потому что эта операция слишком дорога. В настоящее время я использую сеанс для хранения данных экрана - но это очень плохая практика ... Любые предложения, как хранить данные между запросами? Я считаю, что контроллер использования как singleton или с сеансом видимости - это очень хорошая идея, например сервлеты или контроллеры весны mvc. – Aventes

+0

Если данные для каждого пользователя, сеанс хорош. Если данные распространены, кешируйте их, например. в ejb3 @ Синглтон. Подробнее: http://stackoverflow.com/questions/26733141/load-and-cache-application-scoped-data-with-singleton-and-stateless –

+1

Благодарим за помощь! Вопрос был решен) – Aventes