2013-02-11 2 views
1

Проблема кажется глупой, потому что я правильно неправильно понял документ. В основном я просто хочу запустить привет-мир бездействующего пример в соответствии с этим instruction путем простого добавления файла hello.jsp в WEB-INF/контент, а затем работает локальных: 8080/теста/Hello, но Struts продолжает показывать исключение java.lang.NoSuchMethodException: com.opensymphony.xwork2.ActionSupport.index().Как включить плагин для плагинов struts2

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

Может ли кто-нибудь предложить мне правильный путь? Благодаря

Обновлено: здесь дерево проекта, никаких действий, никаких фантазии.

├── pom.xml 
└── src 
    └── main 
     ├── resources 
     │   └── struts.xml 
     └── webapp 
      ├── WEB-INF 
      │   ├── content 
      │   │   └── hello.jsp 
      │   └── web.xml 
      └── index.jsp 

Зависимости в pom.xml

<dependency> 
     <groupId>org.apache.struts</groupId> 
     <artifactId>struts2-core</artifactId> 
     <version>2.3.8</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.struts</groupId> 
     <artifactId>struts2-rest-plugin</artifactId> 
     <version>2.3.8</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.struts</groupId> 
     <artifactId>struts2-convention-plugin</artifactId> 
     <version>2.3.8</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.struts</groupId> 
     <artifactId>struts2-config-browser-plugin</artifactId> 
     <version>2.3.8</version> 
    </dependency> 

    <dependency> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty</artifactId> 
     <version>6.1.26</version> 
    </dependency> 
+0

Нам нужна дополнительная информация, например, версия, что конкретно вы развертываете (в основном, файлы) и т. Д. –

+0

Как правило, если у вас есть рабочее приложение struts2 ... у вас есть одно рабочее действие. Тогда вам просто нужно добавить struts2-conventions-plugin-xxx.jar, где xxx - это ту же версию, что и struts2 core ... Если вы используете maven struts2-core, это зависимость от подключаемого модуля, поэтому все, что вам нужно сделать добавляет плагин. После этого не должно быть никакой конфигурации. Создайте файл /WEB-INF/content/hello.jsp, и он должен быть доступен. Определенная конфигурация может привести к сбою ... Попробуйте использовать пакет, который не существует, например, /WEB-INF/content/xyz/hello.jsp – Quaternion

+0

. В последнем приветственном представлении будет доступ с помощью localhost: 8080/test/xyz/hello предполагая, что ваше приложение называется тестом. – Quaternion

ответ

10

Вы смешали Struts 2 Конвенции плагин с распорками 2 REST плагин и поэтому Struts 2 ищет метод, который называется индексом() (метод по умолчанию для REST).

Удалите плагин REST - struts2-rest-plugin - и все должно работать должным образом.

Если вы хотите смешивать Конвенцию с REST, проконсультируйтесь с документами, например. вы можете использовать struts.rest.namespace, чтобы отличить часть REST приложения от обычной части веб-приложения.

EDIT

Если вы хотите смешать обе стороны - обычный веб-приложение и REST конечных точек - вы можете рассмотреть возможность использования PrefixBasedActionMapper, что позволяет использовать различные картограф на URL. Кроме того, вы должны использовать PrefixBasedActionProxyFactory, чтобы использовать соответствующие фабрики для создания действий, которые будут соответствовать URL-адресу.

+1

+1 для описания – Jaiwo99

Смежные вопросы