老师,为什么在form表单里
>,而在配置文件里却是没有.action的后缀???接着三楼,struts.xml配置文档里 标签<constant>也是可以拓展限制请求路径的后缀的
一楼的回答大体意思是对的,就是说的不清楚。其实关键是对运行机制的理解,StrutsPrepareAndExecuteFilter作为struts2的核心,会根据web.xml中配置的mapping对文件进行过滤。如果是过滤所有文件(/*),那么form中的action的值加不加.action的后缀都是可以的,因为都会被StrutsPrepareAndExecuteFilter过滤到struts.xml中;但是如果只过滤.action文件(<url-pattern>*.action</url-pattern>),那么form中的action的值就必须添加.action后缀,否则不会被StrutsPrepareAndExecuteFilter过滤,导致404错误。
form表单里的action表示表单提交处理的控制器,或者叫方法,struts的控制器后缀默认是.action,所以带有,web.xml里的struts过滤器过滤了所有(/*),所以,就算在表单的action属性里只写控制器名称,不写.action也可以,默认寻找配置文件里,相同名称的控制器
配置文件配置控制器和相关属性的,带后缀做什么呢?<action name="" class="" method=""></action>,name属性的值就是前端表单action属性要提交的控制器的名称,是定义名称,不是调用控制器