Java 更改多模块Maven web项目的struts.xml文件名
我有一个带有多个模块的Maven项目。在四个模块中,有两个是web模块 结构如下Java 更改多模块Maven web项目的struts.xml文件名,java,jsp,struts2,struts-config,action-mapping,Java,Jsp,Struts2,Struts Config,Action Mapping,我有一个带有多个模块的Maven项目。在四个模块中,有两个是web模块 结构如下 MyProject | |__ api | |__ commons | |__ web_child | |__ web_main web\u main模块是主要模块,它还可以包括web\u child模块 web\u子模块模块结构为 web_child | |__ src/main/java //java action classes and
MyProject
|
|__ api
|
|__ commons
|
|__ web_child
|
|__ web_main
web\u main
模块是主要模块,它还可以包括web\u child
模块
web\u子模块
模块结构为
web_child
|
|__ src/main/java //java action classes and all
|__ src/main/resources
| |__ struts-config.xml
|
|__ WEB-INF
|__ JSP Pages
web_main
|
|__ src/main/java //java action classes and all
|__ src/main/resources
| |__ struts.xml
|
|__ WEB-INF
|__ JSP Pages
web\u main
模块结构为
web_child
|
|__ src/main/java //java action classes and all
|__ src/main/resources
| |__ struts-config.xml
|
|__ WEB-INF
|__ JSP Pages
web_main
|
|__ src/main/java //java action classes and all
|__ src/main/resources
| |__ struts.xml
|
|__ WEB-INF
|__ JSP Pages
两个模块都是war
webmain
取决于所有模块,webchild
取决于前两个(API和commons)模块
在webmain
的pom.xml
中,我正在为webchild
添加依赖项,它将自动添加另外两个jar
主模块webmain
在服务器上运行良好
但是,当我试图单独运行webchild
模块时,它会显示如下错误
There is no Action mapped for namespace [/] and action name [childMenu] associated with context path ...
因为它没有使用struts config.xml
当我将文件重命名为struts.xml
时,webchild
工作正常。但此时主模块没有运行
因此,我想将子模块中的struts.xml
重命名为struts config.xml
,我需要显式地指定它
我正在使用Struts2。但是我在web.xml
中尝试了以下方法,显然没有效果
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>../resources/struts-config.xml</param-value>
</init-param>
</servlet>
行动
org.apache.struts.action.ActionServlet
配置
../resources/struts-config.xml
如何解决这个问题
更新1
您好,我在我的web子web.xml中添加了以下内容
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-config.xml</param-value>
</init-param>
</filter>
支柱2
org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter
配置
配置方法
我得到了以下例外。我需要添加任何依赖项吗
SEVERE: Exception starting filter struts2
Unable to load configuration. - [unknown location]
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:483)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: Unable to load configuration. - [unknown location]
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:71)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:429)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:471)
... 19 more
Caused by: Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]
at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:391)
at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:362)
at org.apache.struts2.config.BeanSelectionProvider.register(BeanSelectionProvider.java:288)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:215)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:68)
... 21 more
严重:启动过滤器struts2时出现异常
无法加载配置。-[未知位置]
位于org.apache.struts2.dispatcher.dispatcher.init(dispatcher.java:483)
位于org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
位于org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter.init(strutspreadexecutefilter.java:51)
位于org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
位于org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
位于org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:107)
位于org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
位于org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
位于org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
在java.util.concurrent.FutureTask.run(FutureTask.java:166)中
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:724)
原因:无法加载配置。-[未知位置]
在com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:71)上
在org.apache.struts2.dispatcher.dispatcher.init_预配置(dispatcher.java:429)中
位于org.apache.struts2.dispatcher.dispatcher.init(dispatcher.java:471)
... 还有19个
原因:无法找到所选的ObjectFactory实现:spring-[未知位置]
位于org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:391)
位于org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:362)
位于org.apache.struts2.config.BeanSelectionProvider.register(BeanSelectionProvider.java:288)
在com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:215)上
位于com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:68)
... 还有21个
在struts过滤器初始化参数中明确指定配置文件
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts.xml,struts-config.xml,struts-default.xml,struts-plugin.xml</param-value>
</init-param>
</filter>
支柱2
org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter
配置
struts.xml、struts config.xml、struts default.xml、struts-plugin.xml
我只有struts config.xml
。那么我还需要添加所有这些吗?嗨,我添加了上面的代码。但是我得到了一个错误父包未定义:struts default
哦,孩子,您可以在中找到父包。我将文件名更改为struts default.xml
,现在工作正常