Где положить struts.xml

С Struts2 мы должны иметь struts.xml в пути к классу, поэтому он больше не работает, чтобы иметь его под WEB-INF. Таким образом, способ, которым я получил свой проект для развертывания, заключался в том, чтобы вставить его под WEB-INF/classes и включить его ../struts2.xml

2 Проблемы:

  • Eclipse очищает папку классов, когда я перестраиваю, поэтому удаляет struts.xml
  • Eclipse не отображает папку классов в моем браузере проектов, поэтому его плохое место для хранения файлов конфигурации в первую очередь.

Как вы это делаете разработчикам Struts2 Eclipse?

Ответы

Ответ 1

Вы можете либо просто поместить struts.xml в корневой каталог вашего исходного каталога, либо настроить дополнительный каталог ресурсов и поместить его туда. Eclipse довольно счастливо копирует его в WEB-INF/classes для вас, когда он делает компиляцию.

Ответ 2

Я опаздываю на вечеринку, мы можем настроить struts.xml в любом каталоге в пути к классам веб-приложения, но предоставить местоположение, используя параметр инициализации "config" конфигурации фильтра в web.xml, как показано ниже, если мой файл struts.xml находится в каталоге "/com/resources/".

   <filter>
        <filter-name>action</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
         <init-param>
            <param-name>config</param-name>
            <param-value>struts-default.xml,struts-plugin.xml,/com/resources/struts.xml</param-value>
         </init-param>
    </filter>

Если мы не предоставляем параметр init init, struts2 по умолчанию принимает 3 значения "struts-default.xml, struts-plugin.xml, struts.xml", вы можете увидеть код класса strats2 Dispatcher, ниже которого будут настроены эти 3 файла менеджеру конфигурации.

String configPaths = (String)this.initParams.get("config");
if (configPaths == null) {
  configPaths = "struts-default.xml,struts-plugin.xml,struts.xml";
}
String[] files = configPaths.split("\\s*[,]\\s*");
for (String file : files)
  if (file.endsWith(".xml")) {
    if ("xwork.xml".equals(file))
      this.configurationManager.addContainerProvider(createXmlConfigurationProvider(file, false));
    else
      this.configurationManager.addContainerProvider(createStrutsXmlConfigurationProvider(file, false, this.servletContext));
  }

Ответ 3

Я не использую Eclipse, поэтому этот ответ не является специфическим для ваших требований, но я использую Maven, поэтому у нас есть все "ресурсы", которые необходимы приложению в отдельной папке под названием "resources" и когда приложение построено эти файлы автоматически копируются в соответствующие места. В Netbeans доступны файлы в папке, и я знаю, что есть люди, использующие eclipse с аналогичной настройкой.

Я должен указать, что наш проект начался с appfuse, поэтому большинство этих конфигураций были сделаны заранее. Вы можете посмотреть, как это было сделано.

Ответ 4

В struts 2 проектах файл struts.xml добавляется в папку src (Ресурсы Java) вместе с пакетами и библиотеками.

Пожалуйста, обратитесь к приведенному ниже изображению.

Struts 2 project directory view in eclipse

Если вы хотите узнать больше о структуре проекта struts 2, посетите эту ссылку

Примечание. В eclipse вам не разрешено вставлять файл непосредственно в папку src. Поэтому вам нужно сначала вставить его в любое другое место в проекте (например, в папку "WebContent" ), а затем использовать функцию перемещения, чтобы поместить его в нужное место (это папка "src" ).

Ответ 5

Вы можете разместить файл struts.xml в пакетах src (Java Resources). Когда процесс компиляции struts.xml будет генерироваться внутри каталога ROOT/WEB-INF/classes.

если вы снова и снова получаете ту же ошибку, лучше проверяйте действия расположений. проверьте развернутый путь приложения, и вы сможете узнать, что хотите. (файл struts.xml)