При обновлении моего приложения до использования Spring Boot версии 2.1.8.RELEASE + struts2-Convention-плагин с Struts2-core версии 2.5.20 действия отображаются неправильнои я получаю сообщение об ошибке
com.opensymphony.xwork2.config.ConfigurationException: не существует сопоставленного действия для пространства имен [/] и имени действия [home], связанного с путем контекста [].
Если я декальцирую действия в struts.xml
, они отлично работают.
Ниже моя текущая конфигурация, почему они не отображаются?
Я перепробовал множество различных конфигураций, и, похоже, ничего не работает, StrutsPrepareAndExecuteFilter
запускается, но действия не обнаруживаются, как если бы Spring их не сканировал.Может ли это быть проблемой версии зависимости?
application.yaml
server:
port: 8080
servlet:
context-path: /
Struts2.xml
<struts>
<constant name="struts.devMode" value="false" />
<constant name="struts.convention.action.packages" value="com.myactions.action" />
<constant name="struts.convention.action.includeJars" value=".*?/myjar.*?jar(!/)?,.*?/myjar*?jar(!/)?" />
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.objectFactory.spring.autoWire" value="name" />
<constant name="struts.multipart.maxSize" value="100000000" />
<constant name="struts.convention.default.parent.package" value="struts-default"/>
## THIS WORKS
<!-- <package name="home" extends="struts-default">-->
<!-- <action name="actionHome" class="com.myactions.action.HomeController" method="actionHome">-->
<!-- <result name="success">home.jsp</result>-->
<!-- </action>-->
<!-- </package>-->
</struts>
Контроллер
@Namespace("/")
public class HomeController extends BaseController {
@Action("home")
public String actionHome() throws Exception {
return SUCCESS;
}
}
Главный
@SpringBootApplication
@ServletComponentScan
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) {
return springApplicationBuilder.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Фильтр Struts2
@WebFilter("/*")
public class Struts2Filter extends StrutsPrepareAndExecuteFilter {
}