Ofbiz: 自定义表单校验
来源:互联网 发布:电工模拟仿真软件 编辑:程序博客网 时间:2024/06/07 01:32
用了一段时间ofbiz自带的form widgets工具,发现不是很好用。尤其是与前端配合开发的时候,表单的样式、效果受到了很多的限制。于是决定抛弃form widget,用freemarker。前端开发出来的效果和效率果然有了很大提交。但是存在一个问题,就是用freemarker写的表单提交如何做校验?和Struts不一样,struts框架中自带了form的验证器。那么ofbiz除了form widget以外,有没有办法实现表单验证呢?
答案就在ofbiz的service中。
因为ofbiz的逻辑层是一个一个的services,在给service的定义时,必须要给出传入参数和返回结果(参考services.xml)。如下service中定义了一个createProduct的服务。需要传入productId等参数。
- <service name="createProduct" engine="java"
- location="com.openb2c.product.common.ProductServices"
- invoke="createProduct">
- <attribute name="productId" type="String" mode="IN"
- optional="false"></attribute>
- ......
- </service>
这里可以给每一个attribute内加上这样一个标签:
- <attribute name="productId" type="String" mode="IN" optional="false">
- <type-validate class="org.ofbiz.base.util.UtilValidate "
- method="isNotEmpty ">
- <fail-message message="productId不能为空" />
- </type-validate>
- </attribute>
这个<type-validate>标签将会对attribute: productId进行校验。
校验的方法如上所见,装载class"org.ofbiz.base.util.UtilValidate ",这个class是ofbiz自带的一个验证工具,当然也可以写你自己适用的验证工具 。并调用class中的方法method"isNotEmpty"。这里运用了java的反射技术。fail-message是当验证不通过时,返回给服务调用者的错误信息。
service会把所有的参数都验证一遍,若有多个参数不通过的话,会把所有的不通过信息都返回。
至此,只要我们提交表单时,把request指向一个service。(在controller.xml中定义request-map,request-map中定义<event type="service" invoke="createProduct"/>)。当service校验不通过时,就会把错误并错误信息一起返回。只要在request-map的response中定义service失败的页面跳转,即可把信息返回给用户。
另外,我使用的ofbiz版本(opentaps 1.0使用的)对一个参数只支持一个validator,要支持一个属性多个validators的验证,只需简单的在ModelServiceReader(解释services.xml的工具)的方法addValidators方法中稍作修改即可。
到此,ofbiz表单部分比较满足我们OpenB2C项目的开发需求。前端UI用freemarker较快做出好的页面,并且能对表单做验证。
- Ofbiz: 自定义表单校验
- Ofbiz: 自定义表单校验
- Ofbiz: 自定义表单校验
- Ofbiz: 自定义表单校验
- 自定义表单校验指令
- layui自定义表单校验
- Django 表单校验 表单字段设置 自定义表单校验规则
- 如何自定义校验表单规则
- vue表单自定义校验规则
- angular2+内置表单校验以及自定义表单校验
- EASYUI 使用自定义的校验类型来联动校验表单
- 表单校验
- 表单校验
- 表单校验
- 表单校验
- 表单校验
- 表单校验
- 表单校验
- poj 1040 Transportation DFS剪枝
- OFBIZ 分页代码
- C++类对象创建过程(分配空间、赋值和初始化、对象初始化顺序、虚函数表指针)
- CString——Left、Right、Find、ReverseFind
- OFBiz实现任务调度和JOB运行机制
- Ofbiz: 自定义表单校验
- 安装win7过程中选择磁盘时出现的gpt格式无法安装的问题的解决
- 会画圈的数
- hdoj_2717Catch That Cow
- Windows中通过VMare来安装Linux的方法
- WPF TextBox只允许输入数字
- windows下zendframework项目环境搭建(通过命令行配置)
- hdu 1248 完全背包 水
- OFBIZ11.04开发演示