0

У меня есть сайт, использующий Struts2 в качестве рамки MVC. Мне нужно переделать JSP. Мне нужно, чтобы старые JSP были доступны вместе с новыми JSP. Поэтому я добавил корневую папку /newdesign/ и скопировал в нее все существующие папки JSP.Как применить префикс пути глобального динамического результата в Struts 2, так что могут быть JSP-файлы reskin?

Так что, если я войти в систему с пары имя/значение ?newdesign=true (к примеру) Я первоначальный запрос, то я могу:

  1. магазин это в сеансе пользователя, а затем
  2. динамически добавлять /newdesign/ в глобальный префикс тега в struts.xml, который определяет, загружен ли новый или старый JSP для соответствующего действия.

Таким образом разработчик может проверить, была ли вся старая страница переделана на новую страницу.

Как сделать часть 2. выше? - Я посмотрел на использование struts.convention.result.path = /newdesign, но это не динамично, и я не могу его изменить, если пользователю нужно показать старые или новые JSP.

ответ

0

Если вы знаете часть 1, предположим, что вы можете установить параметр в действие, которое должно перенаправить на соответствующее действие других пакетов, содержащих пространство имен, соответствующее вашему параметру newdesign.

Префикс имени действия, используемого в URL-адресе, указывает пространство имен, используемое для разделения действий в пакетах.

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

Вы можете настроить столько пакетов, сколько у вас модулей с новыми проектами. Если их не так много, тогда это можно сделать просто, как в примере. Но вместо перехода в соответствующее пространство имен в зависимости от параметра вы можете добавить этот параметр к шаблону пространства имен, используемому через wildcard mappings.

+0

Большое спасибо за ваш быстрый ответ ... У меня есть ~ 40 действий с общим количеством ~ 100 тегов, поэтому я не хочу дублировать конфигурацию struts, так как я также сменю код от разработчиков, которые обновляют исходные действия , Мне нужно только обновить JSP, поэтому нужно изменить путь к ним, например, «/newdesign/jsp/admin/login.jsp» (вместо «/jsp/admin/login.jdp») на основе сеанса переменная. Поэтому дополнительное пространство имен и отдельные действия не являются предпочтительным решением. Вы знаете способ, которым я могу глобально добавить такой префикс «результат»? – user1439173

+0

Я нашел способ добавить переменную в тег через EL - http://mycodefixes.blogspot.co.il/2010/10/struts-2-creating-dynamic-results.html Но мне все еще нужно обновить JSP в любом <% @ include файле = "/ jsp/include.jsp"%> внутри моих JSP! Это еще больше усложняет мою потребность в совместном использовании как старых, так и JSP-скелетов. Поэтому я поддерживаю эту идею. Большое спасибо за ваше время. – user1439173

+0

EL - плохое решение с Strurs2, результаты могут иметь динамические параметры. С включением вы должны использовать тег