webwork表单提交中有一个很有用的技巧,在提交成组的类似person[0].name,person[1].name的表单中,可以利用conversion使xwork自动装配对象属性到action中:
form 代码:
<form action="savePerson.action">
<input type="text" name="persons[0].name" />
<input type="text" name="persons[0].id" />
<input type="text" name="persons[1].name" />
<input type="text" name="persons[1].id" />
</form>
person类:
public Class Person{
public String name;
public Long id;
getXXX...
setXXX...
}
然后在action类同层次创建conversion文件,ClassName-conversion.properties,这里用SavePersonAction-conversion.properties:
Element_persons=Person
CreateIfNull_persons=true
这里面配置文件的含义就是页面中persons名字样式的数组表单提交会被xwork转换成一个个对象放入list中,如果list是空的话xwork会自己创建一个.
action的代码如下:
public Class SavePersonAction extends ActionSupport{
List persons=new ArrayList();
}
这样,form中提交的数组形式的属性,会由xwork转换成person对象并放入list中,供action使用.
但这样的验证表单的数据就会与传统xwork的验证不同.传统xml的validation类似如下样子:
<validators>
<field name="name">
<field-validator type="required">
<message>You must enter a value for bar.</message>
</field-validator>
</field>
<validators>
这里的field name必须精确匹配表单中提交的名字,由于我们表单中的name是name
形式的,并不能确定提交哪个person[?].name , 就要用到xwork的一个测试的validation,叫collection,配置方法如下,在SavePersonAction-validation.xml中加入:
<validators>
<field name="persons">
<field-validator type="collection">
<param name="property">persons.name</param>
<param name="validatorRef">required</param>
<param name="validatorParams['defaultMessage']">Must be String</param>
<message> ... </message>
</field-validator>
</field>
</validators>
<validators>
我想实验用collection去使用regex验证,没有成功,可能还有问题,最后还是将表单提交到action层进行正则验证.
conversion会有一个问题,如果person中有一个id声明为long类型,但页面提交的时候这个属性如果包括了字母和数字,就会产生一个conversion error,由于xwork的xml验证是在conversion转换成对象之后进行,无法在之前拦截到, 如果页面操作比较复杂,需要button提交数据到action进行各种操作,会在提交前产生conversion error,不能进入action层进行操作,在开发中需要注意.
分享到:
相关推荐
- **描述**:WebWork框架默认情况下,HTTP请求中的参数值都是以字符串数组的形式接收的。因此,当需要将请求参数赋值给Java对象中的`String`类型的属性时,WebWork会自动将字符串数组的第一个元素转换为字符串类型...
在提供的"Webwork2 Guide.pdf"文档中,你可能会学习到如何安装配置WebWork2环境,创建和运行第一个WebWork应用程序,理解Action和Interceptor的工作原理,以及如何利用WebWork的特性进行表单处理、异常管理和国际化...
亲自做了一个struts2后台接收前台jsp页面传来的数组参数demo,因为参考网上的资源如用webwork表单提交等集成到项目有问题,所以做了一个单独的demo,经测试,用表单提交类似users[0].name,users[1].name的数组参数是...
通过深入研究这些源代码,开发者可以更深入地了解WebWork的工作方式,并学习如何将其应用于实际项目中。对于想要学习Web开发或者对WebWork感兴趣的开发者来说,这个压缩包是一个宝贵的学习资料。
当表单提交时,WebWork会针对每个字段执行验证。相反,Model-Driven Action将整个对象模型作为操作单位,模型对象包含所有相关属性,这样可以实现更复杂的数据关联验证。 **ActionContext(Action上下文)** ...
Webwork2是一款基于Java的开源框架,主要用于构建企业级的Web应用程序。这个框架以其强大的MVC...对于希望深入理解Java Web开发的人来说,Webwork2是一个值得研究的框架,而OpenDoc的这份指南无疑是一个理想的起点。
2. 数据验证(Validation):WebWork2提供了强大的数据验证机制,可以通过注解或XML配置文件定义验证规则,确保输入数据的有效性。 3. 国际化与本地化(i18n/L10n):WebWork2支持多语言环境,通过资源文件管理不同...
当用户提交表单时,请求将被发送到`fileUpload.action`,这是一个Action类的方法。因此,我们需要创建一个名为`FileUploadAction`的Java类,该类需要实现`com.opensymphony.xwork.Action`接口。在这个类中,我们定义...
WebWork2.0是一款基于Java的企业级Web应用框架,它为开发者提供了强大的MVC(Model-View-Controller)架构支持,旨在简化Web应用程序的开发流程,提高代码的可维护性和可扩展性。本讲解将围绕WebWork2.0的核心概念、...
4. **强大的表单处理**:WebWork提供了强大的表单绑定和验证功能,可以直接将表单数据绑定到Java对象,同时进行验证。 5. **强大的异常处理**:框架能够优雅地处理异常,将异常信息转化为用户友好的错误页面,提高...
WebWork 是一个基于 Java 的开源 MVC(Model-View-Controller)框架,它在早期的 Web 应用开发中非常流行,尤其是在 Struts 1 之前。WebWork 提供了强大的动作(Action)处理、类型转换、拦截器(Interceptor)机制...
WebWork 2.0提供了强大的输入校验功能,能够自动检测和处理表单提交的数据,确保数据的有效性和安全性。这一特性对于构建健壮的Web应用程序至关重要,可以有效防止常见的安全漏洞,如SQL注入和跨站脚本攻击。 #####...
ActionForm则作为模型和视图之间的数据载体,用于封装表单提交的数据。 3. **Interceptors(拦截器)**:WebWork2引入了拦截器的概念,它们在Action执行前后执行,可以用于日志记录、事务管理、权限验证等。拦截器...
WebWork 2 是WebWork 1 的后续版本,它引入了许多增强和新特性,如增强的动作类型、拦截器、更好的类型转换机制和更强大的表单回填功能。版本2.2.7是一个稳定版本,包含了一些重要的bug修复和性能优化。`webwork-...
6. **Form Handling**:WebWork自动处理表单提交,支持表单验证和类型转换,减少了处理用户输入的繁琐工作。 7. **Internationalization (i18n) and Localization (l10n)**:框架内置对国际化和本地化的支持,使得...
Webwork2 提供了强大的数据绑定功能,允许开发者将表单字段直接映射到动作类的属性,极大地简化了输入验证和数据处理。通过注解或XML配置,可以定义数据类型的转换器和验证规则。 **4. 异常处理** Webwork2 具有...