你是否是在<html:form>中引用跨模块的action出现这样的问题?这确实是struts的一个bug,我以前遇到过,后来通过看struts的源码,发现:
<html:form action="XXX">
先判断XXX中是否有?号,如果有,则截取?号以前的,这就意味着switchdo根本不能起到作用,然后判断XXX中是否以/开始,如果不是以/开始,则自动加上/,这也就意味着不能使用../XXX的相对路径形式
解决的办法
1:修改源码
2.使用第一种形式
3.在每个struts-config中都配置(麻烦)
<html:form action="XXX">
先判断XXX中是否有?号,如果有,则截取?号以前的,这就意味着switchdo根本不能起到作用,然后判断XXX中是否以/开始,如果不是以/开始,则自动加上/,这也就意味着不能使用../XXX的相对路径形式
解决的办法
1:修改源码
2.使用第一种形式
3.在每个struts-config中都配置(麻烦)
<html:form action="/user/logon">
其中/user/logon对应struts-config-user.xml里面的其中一个action的path属性如果使用第一种形式,那么我的eclipse-struts插件就无法工作了,因为这个插件采用的第二种方法。看来只有修改源码了,狂晕
struts是以当前模块来查找的,你如果是在别的模块,比如news,那你这句的路径就是/news/user/logon,这应该是struts的一个重大bug!在别的里面,比如html:link就不是这样处理的.