<html:form action="/action1.do" method="POST">这个是对的
也可以写成<html:form action="/action1" method="POST">,但是如果你没有用struts提供的标签就要写成<form action="/sample/action1.do" method="POST">另外,你的struts-config-sample.xml是否被配置到Web.xml中??应该按下面这样写:1<servlet>
2 <servlet-name>action</servlet-name>
3 <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
4 <init-param>
5 <param-name>config</param-name>
6 <param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config-7sample.xml</param-value>
8 </init-param>
9 <init-param>
10 <param-name>debug</param-name>
11 <param-value>2</param-value>
12 </init-param>
13 <init-param>
14 <param-name>application</param-name>
15 <param-value>ApplicationResources</param-value>
16 </init-param>
17 <load-on-startup>2</load-on-startup>
18 </servlet>
以上是在web.xml中定义ActionServlet,注意第6行,一定要加上struts-config-sample.xml,否则Struts找不到你的配置文件
也可以写成<html:form action="/action1" method="POST">,但是如果你没有用struts提供的标签就要写成<form action="/sample/action1.do" method="POST">另外,你的struts-config-sample.xml是否被配置到Web.xml中??应该按下面这样写:1<servlet>
2 <servlet-name>action</servlet-name>
3 <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
4 <init-param>
5 <param-name>config</param-name>
6 <param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config-7sample.xml</param-value>
8 </init-param>
9 <init-param>
10 <param-name>debug</param-name>
11 <param-value>2</param-value>
12 </init-param>
13 <init-param>
14 <param-name>application</param-name>
15 <param-value>ApplicationResources</param-value>
16 </init-param>
17 <load-on-startup>2</load-on-startup>
18 </servlet>
以上是在web.xml中定义ActionServlet,注意第6行,一定要加上struts-config-sample.xml,否则Struts找不到你的配置文件
<form-bean name="Menu" type="Fe.Parts.FeBaseFormBean"/>
</form-beans>
<action path="/Job_MenuItiran"
type="Fe.JOB.FeJobItiranAction"
name="Menu"
scope="request"
validate="true"
input="menu.jsp">
<forward name="success" path="/web/JOB/Job_Itiran.jsp"/>
</action>
form定义在<form-beans>和</form-beans>之间,在action里引用要写name="XXXX"
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/sample</param-name>
<param-value>/WEB-INF/struts-config-sample.xml</param-value>
</init-param>
<action-mappings>
<action path="/action1" type="com.xxx.www.actions.NoRightAction">
</action>
</action-mappings>这个才可以用的。
<html:form action="/action1.do" method="POST">
完整的问题是:
在web.xml里定义一个sample模块
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/sample</param-name>
<param-value>/WEB-INF/struts-config-sample.xml</param-value>
</init-param>
在struts-config-sample.xml里面定义如下Action
<action name="testForm" path="/action1">
那么请问在JSP的Form表单该如何找到该action
以下两种我试过了都不行
<html:form action="/action1" method="POST">
<html:form action="/sample/action1" method="POST">
有哪位高人能指点一下,谢谢谢谢!
******************************************************************
[Servlet 错误]-[Cannot retrieve mapping for action /sample/action1]:javax.servlet.jsp.JspException: Cannot retrieve mapping for action /sample/action1
我打算把我的一个项目分成两个小模块!于是,我把我原来的Struts-config。xml文件分成3部分,一个是公共的Struts-config,另外两个分别对应相应的模块。
对应的web。xml文件内容如下:
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/StrutsConfigs/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/debug</param-name>
<param-value>/WEB-INF/StrutsConfigs/struts-debug-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/enet-forum</param-name>
<param-value>/WEB-INF/StrutsConfigs/struts-enet-forum-config.xml</param-value>
</init-param>
然后,我做了一个公共的Index。jsp页面,
提供转到相应的模块。
这是我的公共Strut-config。xml文件里的action:
<action name="MySwitchForm" type="MySwitchAction" scope="request" path="/changeModule">
<forward name="enet-forum" contextRelative="true" path="/enet-forum/listForums.do"/>
<forward name="debug" contextRelative="true" path="/debug/trace/addNewTask.do?operation=newTask"/>
</action>
以struts-debug-config.xml文件为例:
其中一个Action为:
<action path="/trace/addNewTask" type="trace.AddTaskAction" name="newTaskForm" scope="request" input="/jsp/trace/newTask.jsp" parameter="operation">
<forward name="success" path="/trace/listAllTasks.do" redirect="false" />
<forward name="newTask" path="/jsp/trace/newTask.jsp" redirect="false" />
</action>
index。jsp上的页面连接是:
<a href="<%=request.getContextPath ()%>/changeModule.do?moduleName=debug">Debug trace Project</a>
不知楼主明白了吗?
其实,用起来很简单,主要是框架要先架好!!!
连接没问题?
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/sample</param-name>
<param-value>/WEB-INF/struts-config-sample.xml</param-value>
</init-param>
要这样配置才行,即配置多个配置文件,而不是模块:
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config-sample.xml</param-value>
</init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config- sample.xml</param-value>
这个配置表示一个模块,但这个模块的配置文件被拆分成两部分分别管理而已,配置文件的多少和模块本身没有关系的。
如果想弄清楚struts的模块的设计,还是下一些功夫的。不过,struts的模块设计是有问题的,主要在配置文件的共享上,struts不支持模块之间的配置共享的,比如action的共享,这样可能导致一个动作在不同模块的配置文件中的重复定义。它的模块跳转也很不方便,特别是在特殊使用的情况下,不过可以扩展struts完成自己需要的功能。