<package name="testFrame" extends="struts-default" >
<action name="login" class="com.ben.test.action.Login" >
<result name="success">/common/true.jsp</result>
<result name="error">/common/false.jsp</result>
<result name="input" type="dispatcher" >/test/login/login.jsp</result>
<result name="container" type="redirectAction">
<!--在下面这一行总是出现 Undefined actionnamespace parameter-->
<param name="actionName">books</param>
</result>
<!-- 如果不写type属性,默认就是dispatcher;相当于forward,有相同的request context -->
</action>
<action name="books" class="com.ben.test.action.BookList">
<result name="success">/common/true.jsp</result>
<result name="error">/common/false.jsp</result>
<result name="listJsp" >/test/list.jsp</result>
<!-- 如果不写type属性,默认就是dispatcher;相当于forward,有相同的request context -->
</action>
</package>
因为涉及到action之间的跳转,为了不引起混乱和尽快找到相应的action必须为该package指定namespace,所以需要改为如下的形式方能正常工作:
<package name="testFrame" extends="struts-default" namespace="/testFrameFlow">
<action name="login" class="com.ben.test.action.Login" >
<result name="success">/common/true.jsp</result>
<result name="error">/common/false.jsp</result>
<result name="input" type="dispatcher" >/test/login/login.jsp</result>
<result name="container" type="redirectAction">
<param name="actionName">books</param>
<param name="namespace">/testFrameFlow</param>
</result>
<!-- 如果不写type属性,默认就是dispatcher;相当于forward,有相同的request context -->
</action>
<action name="books" class="com.ben.test.action.BookList">
<result name="success">/common/true.jsp</result>
<result name="error">/common/false.jsp</result>
<result name="listJsp" >/test/list.jsp</result>
<!-- 如果不写type属性,默认就是dispatcher;相当于forward,有相同的request context -->
</action>
</package>
这时候前台提交代码也必须要指定相应的namespace,具体如下:
<s:form action="login" method="post" namespace="/testFrameFlow">
要注意黄色背景部分是action="login" 而不是 action="login.action"
虽然我web.xml的过滤器是这样子写的:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
由此可以看出,
1,当在提交表单的时候指定namespace时,后面的.action就不需要添加了,原因是当这个表单提交到相应的namespace="/testFrame/Flow"时,就已经被struts拦截器所捕获,所以就不需要添加.action了。
2,如果要是我要提交的表单没有指定属于struts拦截范围的namespace,这个时候就需要用action="login.action"了,否则,struts是拦截不到这个请求的。
分享到:
相关推荐
JavaScript 中的 undefined、null、NaN 的区别 在 JavaScript 中,undefined、null、NaN 是三个经常被混淆的概念,但它们有着不同的含义和用途。今天,我们将深入探讨这三个概念的区别和应用。 undefined 在 ...
当收到"undefined layer name parameter: at_conn"这样的错误时,calibre表示它找不到某个特定层的定义。处理这类问题通常包括两个步骤: 1. 找到错误提示的位置,确认是否在DRC文件中遗漏了对`at_conn`参数的定义...
js判断undefined类型 今天使用showModalDialog打开页面,返回值时。当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reValue=window.showModalDialog(“”,””,””); ...
相信大家都知道当声明一个变量,并且没有给赋值的情况下,它的初始值是undefined。但是在javascript中,怎么检查一个值是否为undefined呢? 简单来说,在现代浏览器中,你可以安全的比较变量是否为undefined if ...
$act $ POST["act"]; 用以上代码总是提示 Notice: Undefined index: act in F: windsflybook post php on line 18 另外 有时还会出现 引用内容 Notice: Undefined variable: Submit
直到查阅到类似情况:https://forums.xilinx.com/t5/Embedded-Development-Tools/SDK-undefined-reference/td-p/818300 发现我的工程的问题是gcc 链接时找不到库文件,如下图我在gcc链接命令中添加了 -llwip4 (该...
Vue打包Cannot read property 'tapPromise' of undefined报错处理 Vue.js是一款流行的前端框架,用于构建用户界面和单页应用程序。然而,在使用Vue.js时,我们可能会遇到一些报错信息,例如Cannot read property '...
总结起来,"Undefined index"错误提示的解决方法有两种,一种是通过配置来屏蔽这类错误提示,另一种是在代码中对变量的存在性进行判断。推荐使用第二种方法,因为它可以让开发者更清楚地了解程序中潜在的问题,并...
在嵌入式系统开发中,遇到“Undefined异常模式02”这样的问题,通常是由于处理器执行了未定义的指令或者访问了非法的内存地址所引起的。这可能是编程错误、硬件故障或者是系统配置不当导致的。在C语言环境中,这类...
【转】undefined reference to错误的解决方法.doc
理解javascript中undefined和null的区别
内核编译出现 undefined reference to `__gnu_mcount_nc'问题的补丁包
在使用Altera公司的集成开发环境QUARTUS II进行FPGA设计时,你可能会遇到一个常见的错误:“top level design entity “….” is undefined”。这个错误通常表示QUARTUS II无法识别你的顶层设计实体,也就是说,它找...
在嵌入式系统开发中,"Undefined异常模式"是一个关键的概念,尤其是在使用C语言编程时。这个主题涉及到处理器的行为、错误处理以及系统级编程的挑战。在深入探讨之前,我们首先要明白异常在计算机系统中的作用。 ...
Linux权威指南(第三版)
FFmpeg 编译出错 undefined reference to `img_convert’的解决方法 FFmpeg 是一个开源的多媒体处理框架,提供了强大的音视频处理能力。然而,在使用 FFmpeg 库函数时,可能会遇到编译出错的错误,例如 undefined ...
null和undefined的区别 null :表示无值;undefined : 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。==运算符将两者看作相等。如果要区分两者,要使用===或typeof运算符。使用if (!...
在C++程序中调用C编译的静态库时,可能会遇到“undefined reference to ...”错误,这通常意味着链接器无法找到对应的函数定义。要解决这个问题,我们需要理解C与C++之间的互操作性以及编译和链接过程。下面将详细...
当你遇到"Call to undefined function odbc_connect"错误时,这意味着你的PHP环境没有正确配置或者缺少必要的ODBC扩展。 解决这个问题通常涉及以下几个步骤: 1. **检查PHP安装**:首先,确保你的PHP环境中已经...
因此,当你尝试在C或C++代码中使用这两个函数时,编译器会报出“undefined reference”错误。 为了解决这个问题,你可以采取以下几种方法: 1. **静态链接libresolv库**:在Android.mk或者CMakeLists.txt中,确保...