一般说form表单的action属性中,是不用加.action的,而且我用的是struts2的标签
但是我中间出现了 问题
其中我struts.xml的相关配置如下: <package name="test" extends="struts-default">
<action name="register_*" method="{1}" class="com.cfd.action.RegisterAction">
<result name="register">/register.jsp</result>
<result name="input">/register.jsp</result>
<result name="success">/result.jsp</result>
</action>
</package>
我原来还加了一个namespace="\"
但是我页面的form提交时候说找不到 为什么呢??
下面这种方式是404错误:<s:form action="/register_submit" theme="simple">但是我在后面加上.action后就没有问题了:
<s:form action="/register_submit.action" theme="simple">或者是我把前面的正斜杠去了也行:
<s:form action="register_submit" theme="simple">请问一下。。这是为什么啊? 
struts2的标签不是要自动加上.action啊 
为什么会出现这种问题  而且还和斜线有关系啊??
谢谢各位啦 

解决方案 »

  1.   

    struts2默认的后缀是.action,可以不用加,是我把前面的正斜杠去了也行: HTML code<s:form action="register_submit" theme="simple">
    ?这个是相对路径与绝对路径的问题
      

  2.   

    看看加和不加时,它分别生成了什么源文件,斜杠是namespace,具体不多说了,楼主可以去google下
      

  3.   

    不要前面的‘/’,struts会在命名空间中自动去找
      

  4.   

    LZ的配置方法,是struts2的通配符配置方法,也就是动态方法调用的形式。请求后面必须加.action
      

  5.   

    查了一下  什么是默认的表示的 什么
    namespace不配置的时候就是表示的是默认的命名空间,这个时候是相当于namespace=""
    就是为空。
    那这个默认的表示的是什么呢? 
    在所有的package中,只要没有配置namespace,那package中的action就会被放在默认的命名空间里去。
      

  6.   

    LZ 可以通过查看最终生成的HTML 来发现区别看看生成出来的<form>的提交路径
      

  7.   

    关于我的问题
    是不是其他问题  就是命名空间的问题
    如果你配置了命名空间,那么在提交的时候,struts2不会帮你手动的加上action了
    所以如果你配置了namespace,则要加上.action
    而正如楼上说的 不加/ 就表示的是相对路径了
      

  8.   

    struts2默认的后缀是.action,可以不用加
      

  9.   

    struts2  如果用内定的标签 提交表单  那么不需要 加  .action  因为已经默认是这样形式了  如果你用普通表单  提交   就需要  在后面 缀上  .action  
      

  10.   


    顶.权威的:http://struts.apache.org/2.x/docs/namespace-configuration.html
      

  11.   

    其实就是当你要加上namespace的时候,你就必须手动的加上action,这个时候struts不会帮你加上的
    不管是不是通配符的方式