struts-config.xml中的对action的input属性的配置的目的就是用于validate失败后返回。
可以查看org.apache.struts.action.RequestProcessor中的源码,在processValidate()方法中有这样一段:
- protected boolean processValidate(ActionMapping mapping,
- ActionForm formInstance, HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException {
- ……
- ActionErrors errors = formInstance.validate(mapping, request);
- if ((errors == null) || errors.empty()) {
- if (debug >= 1)
- log(" No errors detected, accepting input");
- return (true);
- }
- ……
- String uri = mapping.getInput();
- ……
- RequestDispatcher rd = getServletContext().getRequestDispatcher(uri);
- ……
- rd.forward(request, response);
- return (false);
- }
mapping是一个ActionMapping对象,在ActionServlet对struts-config.xml进行解析时植入的。mapping.getInput()就返回该mapping对象对应的input属性。
*(************关于input属性的另外一个问题*************************************
当前页是动态页面,加了参数才生成的,当前页的表单认证失败后要回到当前页但是INPUT的路径是写在 struts-config.xml里的 怎么给后面加动态的参数?
>> .do后面可以加参数,顺便把struts配置里面对应的redirect设置为"true",就可用xx.do?sdasd=sdsad之类。)
<< 参数是变量。。。在form里的validate方法只会到input的路径上啊
>>INPUT是form验证不通过返回的地址 如果这个地址里面有参数 怎么办? 是动态的
<< 我这两天考虑了一下 不知道这样可行否
首先当前页面是根据那个参数动态生成 把需要显示的内容放到SESSION里
然后 input就写当前页面的URL 把后面标志当前内容的参数去掉 这样表单验证失败回到当前页面
由于显示的内容在session里 所有不需要那个参数也就能正常的显示了
这里还要在Action里做判断 如果有参数 那么针对这个参数从生成DTO 放到session
里,如果参数为NULL,直接 forward回这个页面,这个request肯定是验证失败INPUT过来的
这时SESSION已经有存放显示内容的 DTO,故正常显示
不知道这样可行否 我把我的改改 手里的项目 由于都是这种带参数的 所以表单验证都放到Action里了.
>> 不过你这种做法是不是的选择个适当时机把seesion里的值去掉,,要不session太大了
<< 我感觉你最好不要用SESSION这东西来存这个,这是一种浪费!你最好在用完之后清除掉!这样最保险!
我也遇到这样的问题,应该有更好的解决办法.
分享到:
相关推荐
JavaScript获取网页表单的action属性是一种常用的操作,通常用于获取表单提交时要发送到的URL地址。在Web开发中,表单是用来收集用户输入数据并将其发送到服务器的HTML元素。action属性指定了表单提交后,服务器处理...
### Input 标签的属性详解 #### 一、概述 在HTML中,`<input>`标签是最常用的表单元素之一,用于收集用户输入的数据。它通过`type`属性定义了不同的输入控件类型,比如文本框、密码框、按钮等。本文将详细介绍`...
HTML5为表单带来了许多增强的功能,其中关键的一环是新增的input属性。这些属性使得表单输入更加灵活,提供了更好的用户体验和数据验证。以下是四个主要的新增属性的详细说明: 1. **multiple** 属性: 在HTML5...
- `formaction`: 此属性允许为`<input type="submit">`或`<input type="image">`元素指定一个不同的处理表单动作的URL,覆盖了`<form>`标签的`action`属性,这意味着同一个表单的不同提交按钮可以有不同的目标地址...
- formaction:覆盖表单的action属性,决定数据提交的URL。 - formenctype:改变表单数据的编码类型。 - formmethod:覆盖表单的提交方法(GET或POST)。 - formnovalidate:防止表单验证,允许提交不合法的数据...
然而,如果在表单内部存在一个名为`action`的输入元素(例如`<input>`或`<button>`),这可能会引发一些意外的行为,正如标题“表单中有name为action的元素时,取form的属性action杯具了”所描述的问题。 当我们...
在网页设计与开发中,`input`元素扮演着极其重要的角色,它允许用户输入数据,并通过不同的属性实现多种功能。本文将详细解析`input`的不同类型及其在实际开发中的应用技巧。 #### 二、`input`类型详解 ##### 1. `...
在硬件抽象层(HAL)中,你需要创建一个`input_device.h`头文件,定义设备的属性,如设备名称、类型和支持的键值。然后在对应的`input_device.c`或`.cpp`文件中实现设备的初始化和事件处理函数。例如,如果我们要添加...
`<form>` 标签是创建表单的基础,它的 `action` 属性定义了处理表单数据的服务器端脚本,而 `method` 属性则指定了数据发送的方式,如 "GET" 或 "POST"。 在表单中,`<input>` 标签是最常用的控件之一,它可以以...
如果`validate()`方法返回非空的`ActionErrors`对象,则表明表单验证未通过,此时会转向由`input`属性所指定的URI;反之,如果返回的是空的`ActionErrors`对象,则表示表单验证成功,这时将执行`Action`类的`execute...
#### 三、新的input属性 ##### 1. **autocomplete** **定义与用法**: - 此属性与前述 `<form>` 中的 `autocomplete` 类似,但仅应用于 `<input>` 元素。 - 可以通过设置为 "on" 或 "off" 来控制是否启用自动补全...
这是因为当`method`是`GET`时,浏览器只会处理表单内的`<input>`、`<select>`、`<textarea>`等元素的`name`与`value`作为请求参数,而不会考虑`action`属性后面手动添加的参数。 要解决这个问题,我们需要将`method...
`action`属性指定了处理表单数据的URL,可以是服务器上的脚本或者同一页面内的JavaScript函数。`method`属性则规定了数据发送到服务器的方式,通常是`GET`或`POST`。 `<input>`元素是表单中最常见的控件,用于接收...
form action="demo_form.asp" method="get"> <input type="search" name="user_search" placeholder="Search W3School" /> <input type="submit" /> </form> 定义和用法 placeholder 属性...
- **动态创建和添加表单**:如果需要动态创建表单并设置`action`,可以使用`document.createElement('form')`创建一个新的`<form>`元素,然后设置它的`action`属性和其它属性,最后添加到DOM树中。 - **动态移除...
以下是对`struts1.x_action`属性的详细解释: 1. **attribute**: `attribute`属性用于指定`ActionForm`对象在请求或会话中的存储名称。`ActionForm`是用来收集用户从表单提交的数据的类。如果没有设置`attribute`,...
Struts2框架通过ActionContext获取到request对象,并从中提取用户输入的数据,将其赋值给Action的相应属性。 4.3.2 基本的数据对应方式 Struts2提供了两种主要的数据绑定方式:属性驱动(FieldDriven)和模型驱动...
这种方法同样通过提交表单来触发Action,但这里直接调用了表单的`submit`方法,不需要显式修改表单的`action`属性。 ##### 4. **参数传递** 在调用Struts Action时,经常需要向Action传递参数。这些参数可以是...
例如,如果客户端发送了一个名为`input`的参数,Struts2会自动将其值赋给Action中的`input`属性。在Action的execute方法中,你可以访问这些属性来执行业务逻辑。 至于拦截器,Struts2提供了一种强大的机制,可以在...
在`change`事件中,获取用户选择的文件,然后使用FileReader对象的`readAsDataURL`方法读取文件内容,并将其转换为Base64编码的URL,最后将这个URL赋值给`<img>`元素的`src`属性,完成预览。 ```javascript ...