创建多个struts-config.xml文件无效??

1111111 2008-04-20 08:08:28
在web.xml中加入新的struts-config-user.xml
<init-param> 
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/user</param-name>
<param-value>/WEB-INF/struts-config-user.xml</param-value>
</init-param>

但是新的struts-config-user.xml中的配置不起作用
<struts-config>

<!-- 表单 Bean -->
<form-beans>
<form-bean name="UserActionForm" type="com.yu.bbs.actionform.UserActionForm" />
</form-beans>

<!-- 操作映射 -->
<action-mappings>
<action path="/log"
type="org.springframework.web.struts.DelegatingActionProxy"
name="UserActionForm"
scope="request"
parameter="method"
validate="false">
<forward name="success" path="/success.jsp" />
<forward name="fail" path="/fail.jsp" />
<forward name="turn" path="/pages/first.jsp" />
</action>

</action-mappings>

</struts-config>


不把这个struts-config-user从struts-config分出来就不会出错。现在的错误是:
HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url.
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause

org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url.
org.apache.struts.chain.commands.AbstractSelectAction.execute(AbstractSelectAction.java:71)
org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.


怎么会是这样?请高手解决!!
...全文
348 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
songbob 2009-06-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pizzame 的回复:]
<param-name>是你定义的serlet的初始化参量的名字。这个名字不是由你自己定义的。

对于struts配置文件扩展的方法就按照1楼说的去写就可以了.
[/Quote]

我不太赞同3楼的说法.

我从STRUTS1.3里面的样例(struts-examples-1.3.10)看到下面的配置,它的就好用.<param-name>的值应该可以改动.
建议楼主去看看.

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

<!-- Default -->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>

<!-- Exercise module -->
<init-param>
<param-name>config/exercise</param-name>
<param-value>/WEB-INF/exercise/struts-config.xml</param-value>
</init-param>

<!-- File Upload module -->
<init-param>
<param-name>config/upload</param-name>
<param-value>/WEB-INF/upload/struts-config.xml</param-value>
</init-param>

<!-- Validator module -->
<init-param>
<param-name>config/validator</param-name>
<param-value>/WEB-INF/validator/struts-config.xml,
/WEB-INF/validator/struts-config-bundles.xml,
/WEB-INF/validator/struts-config-i18nVariables.xml,
/WEB-INF/validator/struts-config-type.xml,
/WEB-INF/validator/struts-config-validwhen.xml
</param-value>
</init-param>
... ...
<servlet>
lkj107 2008-04-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pizzame 的回复:]
<param-name>是你定义的serlet的初始化参量的名字。这个名字不是由你自己定义的。

对于struts配置文件扩展的方法就按照1楼说的去写就可以了.
[/Quote]
睿音 2008-04-21
  • 打赏
  • 举报
回复
<param-name>是你定义的serlet的初始化参量的名字。这个名字不是由你自己定义的。

对于struts配置文件扩展的方法就按照1楼说的去写就可以了.
lifanfly 2008-04-21
  • 打赏
  • 举报
回复
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml,
/WEB-INF/struts-config-conf.xml
</param-value>
</init-param>
我记得我以前是这样做的,可以。
1111111 2008-04-20
  • 打赏
  • 举报
回复
谢谢caoyinghui1986,你的办法的确可以。但是我想知道-看下边代码
<init-param> 
<param-name>config/user</param-name>
<param-value>/WEB-INF/struts-config-user.xml</param-value>
</init-param>


<param-name>config/user</param-name>
config/user这里,就是这里出的问题。如果/user的话,为什么就不行呢?如果一定要这么写<param-name>config/user</param-name> 。应该改成什么样??
谢谢
Shine_Panda 2008-04-20
  • 打赏
  • 举报
回复

这样改一下应该可以。
<init-param> 
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config-user.xml</param-value>
</init-param>



parameter="" //指定Actgion的配置参数,在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该配置参数。(相当于初始化赋值) >>> prefix=""// 指定填充当前 Action 关联 FormBean 时 ,要添加到请求参数名称的前缀,因此,如果请求参数名为 "username" 并且 prefix 属性被设置为 "search" , 则将对 FormBean 调用一个名为 setSearchUsername() 的方法,只有指定了 name 属性,本属性才有效 roles="" //指定允许调用该Action的安全角色,多个角色之间用,隔开,在处理请求时,RequestProcessor会根据该配置项来决定用户是否有权限调用Action权限。 scope="request" //指定ActionForm Bean的存在范围,可选值为request和session。默认为session >>>> suffix="" // 指定填充当前 Action 的关联 FormBean 时,要添加到请求参数名称的后缀,因此,如果请求参数名为 "username" 并且 suffix 属性被设置为 "search" , 则将对 FormBean 调用一个名为 seUsernameSearch() 的方法,只有指定了 name 属性,本属性才有效 unknown="false" //如果此项为true,表示可以处理用户发出的所有无效的Action URL,默认为false; validate="true" //指定是否要先调用ActionForm Bean的validate()方法。默认为true forward="" //如果当前 Action 映射路径匹配,则指定一个要转发到的相对于模块的 URL,使用 RequestDispatcher.forward()执行转发 > 注意:如上属性中,forward/include相斥,即二者在同一Action配置中只能存在一个。

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧