问答详情
源自:4-8 接收参数-深入Struts2

关于form表单里的action和配置文件里的action

老师,为什么在form表单里

>,而在配置文件里却是没有.action的后缀???

提问者:想要成为程序猿 2016-01-23 23:18

个回答

  • 慕粉3796571
    2017-06-27 18:23:05

    接着三楼,struts.xml配置文档里  标签<constant>也是可以拓展限制请求路径的后缀的

  • Adam_Ming
    2016-03-23 22:43:32

    一楼的回答大体意思是对的,就是说的不清楚。其实关键是对运行机制的理解,StrutsPrepareAndExecuteFilter作为struts2的核心,会根据web.xml中配置的mapping对文件进行过滤。如果是过滤所有文件(/*),那么form中的action的值加不加.action的后缀都是可以的,因为都会被StrutsPrepareAndExecuteFilter过滤到struts.xml中;但是如果只过滤.action文件(<url-pattern>*.action</url-pattern>),那么form中的action的值就必须添加.action后缀,否则不会被StrutsPrepareAndExecuteFilter过滤,导致404错误。

  • _Mok
    2016-01-24 14:30:52

    form表单里的action表示表单提交处理的控制器,或者叫方法,struts的控制器后缀默认是.action,所以带有,web.xml里的struts过滤器过滤了所有(/*),所以,就算在表单的action属性里只写控制器名称,不写.action也可以,默认寻找配置文件里,相同名称的控制器

    配置文件配置控制器和相关属性的,带后缀做什么呢?<action name="" class="" method=""></action>,name属性的值就是前端表单action属性要提交的控制器的名称,是定义名称,不是调用控制器