最近公司将来一银行项目要使用到普元的EOS,客服是普元合做机构,没办法,必须将系统在EOS平台上部署开发,认真学习了2个星期,对EOS6.0的印象仍是很是的好。丰富的页面开发组件,SOA我不是特别特别的说的出来,看了SOA相关文档和对比传统的开发模式,EOS的思想很是值得学习,EOS里面的组件设计,能更好的增长代码的可重复性,模块的独立性,这对于一个大型银行系统来讲,所带来的好处不言而喻。不过这些高深莫测的名词也掩盖不来它背后一些基本的东西,大量使用接口,XML,依赖注入等等。概念是用来推销的。在使用过程当中也渐渐发现存在的一些问题,甚至是软件BUG,固然这都是能够理解的,毕竟6.0刚出来不久,相信之后的版本会有更多值得咱们期待和改进的地方。javascript
EOS RichWeb组成html
1、 理论基础java
- ide开发环境 ide开发环境包括了jsp编辑器,工具面板和属性视图。
- javascript api EOS RichWeb提供了字符串处理,日期处理,dom操做,ajax操做等js函数。
- 标签库 所谓的标签库,跟咱们平时使用的JSTL标签和struts标签功能原理都是同样,能够联想起来使用。 EOS RichWeb共提供了6大类的标签。
- Bean类: 用于把数据区、Cookie、Http头、http请求参数以及资源文件中的内容输出。
- Html类:在html控件元素基础上进行了扩展和加强。
- Logic类:提供了一些逻辑判断标签, 用于jsp页面逻辑控制。
- Dict类: 生成与业务字典相关的html控件元素。
- Webcomp类:提供了date,popmenu,panel,tabpanel,tree等高级控件。
- RichClient类:提供了datacell,comboselect等ajax控件。
EOS的JSP编辑器仍是至关好用,提供了丰富的控件,拖拽便可生成代码,特殊的部分须要手工更改。标签大部分提供了对Xpath语法的支持,对JavaBean,List,Map,Document,request,sessiond的操做都很方便。
PS:
1) EOS的RichWeb和建设银行的标签库所提供的所有功能基本同样,数据集遍历,日期类型甚至页面的action跳转方式都相似,建议可参考于CCBCSPS的WEB层来掌握EOS RichWeb开发。
2. 比较运算(等于<l:equal>)判断(<l:empty>)和逻辑循环(<l:iterate>)结合JSTL标签的<c:if/> <c:foreach />学习很容易。
3.Webcomp类和RichClient类是实现EOS RichWeb的高级控件,特殊的页面效果等等均可以简单的实现。控件大部分使用ajax实现,效率很高。
2、 标签实例
- 1. 单选列表
单行选择控件由两个标签组成:<w:radioGroup> 和<w:rowRadio>,<w:rowRadio>必须嵌套在<w:radioGroup>中才能使用,<w:rowRadio>能够嵌套<h:param>用来设置行参数。在使用单行选择控件标签时,嵌套<w:panel>。
例子:
对一个查询的学生信息viewList列表进行遍历并展现,使用单行选择控件<w:radioGroup> 配合logic类的<l:iterate>标签实现, <w:rowRadio>中使用<h:param>来设置勾选选中的参数。
- 2. 多行选择控件
多行选择控件由两个标签组成:<w:checkGroup> 和<w:rowCheckbox>。<w:rowCheckbox>必须嵌套在<w:checkGroup>中才能使用,<w:rowCheckbox>能够嵌套<h:param>用来设置行参数.使用方法和单选同样,更多效果可参考EOS RichWeb开发指南 ,对控件的JS接口进行简单的配置便可实现。在使用多行选择控件标签时,嵌套<w:panel>。
由两个标签组成:<w:checkGroup> 和<w:rowCheckbox>。使用方法和单选同样,<w:rowCheckbox>必须嵌套在<w:checkGroup>中才能使用,<w:rowCheckbox>能够嵌套<h:param>用来设置行参数。更多效果可参考EOS RichWeb开发指南 ,对控件的JS接口进行简单的配置便可实现。在使用多行选择控件标签时,需嵌套<w:panel>。
- 3. 同页面多个列表
例子:在同一页面展现学生信息和学校信息2个列表。
后台处理
将学生信息列表stuList和学校信息列表schList保存在viewMap中待显示,代码以下:
HashMap map = new HashMap();
map.put("stuList", stuList) ;
map.put("schList", schList)
request.setAttribute(viewMap,map);
页面处理
⑴新建页面stuschList.jsp以下:
经过上段代码能够将viewMap中的stuList和schList设置到request中,方便咱们用<l: iterate >遍历取值。值得注意的是:在后台中咱们进行map.put("stuList", stuList) ;map.put("schList", schList)的时候,必须保证key和value的变量名称是同样的,不然使用上段代码将不能达到预期效果。
⑵而后使用Logic类的<l: iterate >标签分别对其进行展现。
虽然EOS提供了对HashMap取值的标签,可是HashMap中的value,对象只能是一维数组,对于二维数组的value,不能继续配合<l: iterate >进行遍历。
- 1. 弹出框模态页面配置
弹出框在执行com.richweb.eos.PoupSch.flow后会弹出选择页面,对这个页面须要手写JS和设置参数,当勾选了数据后才能够正常返回到父页面。
弹出框页面处理
勾选某笔资料后,<h:parm>配置返回哪些数据需返回到父页面。
在js里,模态页面返回的数据都是存放在数据对象Array中,在父页面的回调函数经过取数组中的数据设置到父页面获取的数据。如何在模态页面处理选择须要返回的值,请参考以下代码:
弹出框父页面处理
弹出框,一种是使用RichWeb的lookup标签,一种是使用EOS JS库的showModal,后台须要多写点js。
先看代码:
⑴预先配置好弹出框的页面流com.richweb.eos.PoupSch.flow。
⑵使用<w:lookup>标签时, 需配置id,lookupUrl,onReturnFunc。<w:lookup dialogTitle="学校弹出框" allowInput="false" name="schname" id="lookup1" lookupUrl="com.richweb.eos.PoupSch.flow"
onReturnFunc="returnFunc" /> 。其中looupUrl是弹出框URL,onReturnFunc是弹出框返回触发的函数。其余参数属性能够参考开发手册去理解。
⑶手写返回函数。使用showModal作弹出框,须要本身写JS,设置模态页面的URL,,大小,位置,及回调函数callback。参考JS以下:
- <script type="text/javascript"><!--
- function popusch(){//弹出框的页面流地址
- var url="com.richweb.eos.PoupSch.flow";
- testShowModal(url);
- }
-
- // 关闭对话框时的回调函数
- function callBack(value){ //value是从模态页面传来的数组 showModal返回回调函数
- $id('sechschid').value = value[0] ; //将数组中的数据设置到父页面
- $id('sechshcname').value = value[1] ;
- }
-
-
- function testShowModal(url){ //弹出模态窗口,argument为传入弹出框须要的参数(能够为空) callBack是回调函数
- var argument ;
- // 显示对话框,参数依次为,
- // 对话框内的页面url
- // 传给对话框的参数
- // 宽度, 高度 左坐标 上坐标
- // 对话框标题
- showModal (url,argument,callBack,400,400,300,100,"学校弹出框");
- }
- function returnFunc(value){ //value是从模态页面传来的数组 lookup返回回调函数
- $id('schid').value = value[0] ;
- $id('lookup1').displayValue = value[1] ; //获取lookup对象,并设定显示值displayValue ps:lookup必定要给一个id
- }
- // --></script>
- 页面跳转
例子:页面有新增,修改,删除按钮,点击须要跳到不一样的页面。
点击按钮会触发一个JS,不一样的操做调用不一样的JS,JS的功能是设置本次操做的action动做名称,通知页面流来执行。