日期:2014-05-18  浏览次数:20730 次

100求助,在线等:struts 配置多应用模块出错
web.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
    <action-mappings   type= "org.apache.struts.action.ActionMapping ">    
          <action
          attribute= "userForm "
          input= "/user/userBas.jsp "
          name= "userForm "
          path= "/insertUser "  
              type= "com.aaa.action.user.StarAction "
              scope= "request "
              validate= "false ">
            <forward
            name= "success "
            contextRelative= "true "
            path= "/star/admin.jsp "   />            
          </action>
    </action-mappings>
userBas.jsp
<html:form   action= "/insertStar.do ">
</html:form>
错误提示:
javax.servlet.ServletException:   Cannot   retrieve   mapping   for   action   /insertUser
错误描述:
struts配置多应用模块出错
如果把 <html:form> 换成 <form> 并且写成 <form   action= " <%=request.getContextPath()%> /star/insertStar.do "> 的形式,就没问题
action使用.............:8080/user/insertUser.do可以直接执行


------解决方案--------------------
呵呵,不明白你在说什么
------解决方案--------------------
配置多模块的时候,需要在不同的模块之间进行转发的,可以在默认配置文件中声明一个SwitchAction用来不同模块之间的转发;如果我没记错的话,配置好后 <html:form action= "/user/HelloWorld.do "这样使用;
另外还有个简单的方法,缺点是不能扩展控制器、资源文件等。
如下,在config的值里追加子模块的名字
web.xml
<init-param>
<param-name> config </param-name>
<param-value> /WEB-INF/struts-config.xml,/WEB-INF/struts-config-user.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>
------解决方案--------------------
<form action= "/HelloWorld2.do ">
<html:form action= "/HelloWorld2.do ">

两者的 action 是不一样的

struts 的 html:form 在解析成 form 时, 会在原始 action 前面加入模块名


------解决方案--------------------
同样的问题。。。。
我的是直接用 <html:link/> 链接到上传页,也就是从默认模块到子模块中,想用 <html: