吃草公司框架(Ofbiz框架的二次开发)的增删查改功能总结

一、整体概述:

本次做的功能是公司框架中基础的四个功能:增、删、查、改。使用Ajax进行前后端的交互,自己手写方法并进行调用,以达到为将来的开发打一个坚实基础的目的。
二、分点描述:
1.增(Save):
首先,在MainForm.ftl页面中,定义一个button,我们使其type=button,然后在onclick事件中定义一个方法(由于Ajax不是凭空运行,需要一个触发事件,所以我们将单击按钮作为事件的触发)。

其次,我们来写这个onclick方法:首先我们使用 $("#id").val(); 方式来获取页面文 本框内填写的值,并分别var一个变量进行接收,然后我们使用Ajax进行前后端数据的交互。其中:
$.ajax:是一种固定格式,表示要使用Ajax了;
url:要求为String类型的参数,指的是发送请求的地址(默认是当前页的地址);
data:要求为Object或String类型的参数,指的是发送到服务器的数据(可以像截图中一个一个(类似键值对)的方式向后端传数据,也可以通过 $("form").serialize() 这种方式,把序列化的值传给ajax()作为url的参数);
type:要求为String类型的参数,指的是请求方式(post或get),默认为get;
dataType:要求为String类型的参数, html 表示返回纯文本HTML信息;
async:指的是是否为异步,false为同步,true为异步;
beforeSend:表示可以在发送前添加某些步骤;
complete:表示在发送完成后进行某些步骤;
success:截图中的含义是指成功后跳转至对应地址的页面。

  在定义了URL以后,需要在controller.xml中连接到一个Java方法。方式如下:

其中: path .java 中的 包名.类名 invoke path 配置的类名中的方法名。
接着,在与URL配置的相应位置下写Java方法:


其中:getParameter()方法是接收前端传递过来的参数;getNextSeqId()方法可以生成主键,用变量接收以后可以另做他用;makeValue( entityName , toMapAction )方法是在数据库 entityName 表中插入一条数据,一定要记得.create();定义输出流后,.write( Param )可以向前端传递参数。
2.改(Update):
此功能与Save功能类似,将区别与细节列出:
第一,在MainForm页面写一个按钮:

  第二,写onclick方法:

  和Save功能相比,Update功能需要从CustomizeScreens.xml文件里<actions>标签下的<set>标签里获取一个参数,用 ${parameters.XXX?if_exists} 的形式进行获取。
第三,配置controller.xml:

第四,写Java方法:


其中,执行SQL语句用executeUpdate(sql)方法,返回一个int值,可以知道修改了几条数据。
3.查(View):


主要就是关于URL的拼接要保证正确,使用showWindOpen()方法,获取所点击的那一行数据的主键ID(row.get( pkId )),然后将pkId和entityId拼接在字符串中。第一个参数和最后一个参数是页面展示在上面的文字,第二个参数是确定哪一个按钮。
4.删(Delete):
首先,每一行做一个按钮。最终效果如图所示:

第一步:

其中,header是用来定义表头的显示部分;dataIndex是定义样式,是按钮;width是指宽度;align是对齐方式;renderer可以格式化该列显示的数据格式或者按照自定义的脚本显示最终数据样子。
renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){}
其中,关于renderer方法里的参数:
(1).value是当前单元格的值;
(2).cellmeta里保存的是cellId单元格id;
(3).record是这行的所有数据,通过 record.data["id"] 方式来获取想要的数据;
(4).rowIndex是行号;
(5).columnIndex是列号;
(6).store是表格里所有的数据,以随便调用。
第二步:


这里需要注意,由于整个<span>标签都是String类型,所以,想要传参数就要用截图中的方式,转义的引号(\ )和应该加的引号( )容易出错。
  第三步:

此处为了不使页面重新闪一下,我们只重新加载grid而非整个页面,需要注意的是需要将grid升级为全局变量,否则这里可能会获取不到grid。
其次,配置controller.xml:

接着,写Java方法:

系统中的删除是将数据库中 STATE 字段由 CREATE 更改为 DEL ,我也是用的这一方式。需要注意的是:我们一般将输出语句放在finally中,因为这样可以保证一定执行这些代码,如果没有放在finally中而是在try中,若执行输出语句之前出错则会执行catch中的内容,会跳过这些输出语句。
数据库中也是包含这些数据的,这些数据会根据增、删、查、改的操作而发生改变,截图如下:


全文为个人小结, 仅做学习、总结之用。版权所有,可以翻录;如有雷同,必须巧合。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值