给我都知道在Struts 2 中访问一个action可以写出 my.action也可以不要后缀名,不过对于不要后缀名,匹配出了问题,我在jsp页面中直接这样写URL,href="/manage",我在struts.xml中定义了默认的命名空间,像这样<package name="default" extends="global" namespace="">
     <action name="manage" class="manage.ManageAction">
    <result name="login">/manage/login.jsp</result>
    <result name="success">/manage/misc/index</result>
</action> 
</package>我本来以为可以运行的但是事实上不能运行,我有点疑问就是对于这样的url/manage,struts2到底是怎么处理的,是当初命名空间到"/manage"的命名空间去找,还是像我上面的一样找 ,如果我不想写后缀,但是又想像我上面那样写url,应该怎么办 ,我看有很多struts2的网站都没带后缀,是怎么实现的 ,哪位大侠知道?

解决方案 »

  1.   

    1.
    namespace="" 写不写都一样的
    有写命名空间先找是否有匹配的 没有就找没有命名空间的2.
    我按你写的可以访问
    访问的时候  <a href="<%=path%>/manage">goto action</a>3.
    另外.action和没写是一样的 struts.properties中:struts.action.extension=action,,
    你有后缀可以访问那么没有后缀就一定可以访问
    4.
    如果想用.do可以在struts.xml中配置:
    <constant name="struts.action.extension" value="action,do,,"></constant>
    表示可以用 action或do或 没有
      

  2.   

    命名空间一般是为了避免重名的action。就像把相同名的action放在不同的包下。
    路径有没有后缀是可以通过配置来改变的,可以是.action、.do也可以没有。
      

  3.   

    用 注解 多好struts.xml都省去了
      

  4.   

     <result name="success">/manage/misc/index</result>
    index加.jspaction的后缀加不加都可以,配置在org.apache.struts2下的default.properties里面的struts.action.extension=action,,
      

  5.   

    <s:url id="idUrl" action="manage"></s:url>
    <s:a href="%{idUrl}">Test</s:a>