浏览 5048 次
锁定老帖子 主题:bboss标签库与jstl标签库功能对比
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-09-15
最后修改:2013-09-16
逻辑标签和数据展示标签 1.导入的tld文件 使用bboss标签库,jsp头部需要导入: <%@ taglib uri="/WEB-INF/pager-taglib.tld" prefix="pg"%> jstl标签库,jsp头部导入: <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%> 2.逻辑判断标签对比 分别使用bboss和jstl来实现逻辑或条件判断功能:menuType的值为 'item'或者'module'或者'subSystem'时为真: 先看jstl <c:if test="${menuType eq 'item' or menuType eq 'module' or menuType eq 'subSystem'}"> do somthing. </c:if> 再看bboss,可以通过in标签和true标签来实现上述功能(使用in标签是不是比if标签要更简单和直观一些呢?): <pg:in actual="${menuType}" scope="item,module,subSystem"> do somthing. </pg:in> bboss的true标签实现上述功能(true比if的语义更加明确): <pg:true actual="${menuType eq 'item' or menuType eq 'module' or menuType eq 'subSystem'}"> do somthing. </pg:true> bboss的逻辑标签比较丰富,功能丰富,语义明确,除了true和in,还有相对应的false和notin标签,他们可以嵌套组合实现if/else等各种各样的逻辑判断操作,更加详细的信息可参考文档《bbossgroups标签库使用大全(续)》;jstl的if等逻辑标签功能也非常丰富,但是语义不明确,看起来比较费劲。 3.集合展示标签对比 主要是collection/数组/map的展示标签,先看看jstl如何来展示一个collection集合: <c:forEach var="subSys" items="${subSystems}"> <fieldset> <legend>${subSys.value.name}</legend> <table> <tr> <td width="124" height="28" class="detailtitle"> id: </td> <td class="detailcontent"> ${subSys.value.id} </td> </tr> <tr> <td width="124" height="28" class="detailtitle"> name: </td> <td class="detailcontent"> <c:forEach var="name" items="${subSys.value.localeNames}" varStatus="status"> ${name.key}:${name.value}${status.index != fn:length(subSys.value.localeNames)-1 ? "," : ""} </c:forEach> </td> </tr> <tr> <td width="124" height="28" class="detailtitle"> baseuri: </td> <td class="detailcontent"> ${subSys.value.baseuri} </td> </tr> </table> </fieldset> </c:forEach> 再来看看bboss的list标签如何展示上述功能: <pg:list actual="${subSystems}"> <fieldset> <legend><pg:cell colName="name"/></legend> <table> <tr> <td width="124" height="28" class="detailtitle"> id: </td> <td class="detailcontent"> <pg:cell colName="id"/> </td> </tr> <tr> <td width="124" height="28" class="detailtitle"> name: </td> <td class="detailcontent"> <pg:map colName="localeNames" > <pg:mapkey />:<pg:cell /><pg:equal expression="{rowcount}-1" expressionValue="{rowid}"> ","</pg:equal> </pg:map> </td> </tr> <tr> <td width="124" height="28" class="detailtitle"> baseuri: </td> <td class="detailcontent"> <pg:cell colName="baseuri"/> </td> </tr> </table> </fieldset> </pg:list> jstl的foreach和bboss的list标签都可以很好地展示collection、数组、set中的数据,也能够嵌套使用,bboss有专门的map标签来展示map数据。jstl为了展示数据会定义一个数据变量和状态变量,并且获取集合长度还要反复调用fn标签;而bboss无需定义这两个变量,不仅内置了rowcount标签和rowid标签,而且在equal等逻辑标签的expression和expressionValue表达式属性中还可以使用以下内置变量: rowid:遍历集合的当前行号(从0开始) offset :分页标签中当前页的第一条记录在总记录中所处的位置 rowcount :总记录数 pagesize :当前页或者当前列表获取到的记录数 mapkey :map中当前记录的key currentcell:map中当前记录的值 如果上述的list展示内容较多,我们可以精简一下: bboss <pg:list actual="${subSystems}"> <pg:cell colName="name"/>//对象中的name属性 <pg:cell colName="id"/>//对象中的id属性 </pg:list> jstl实现相同的功能: <c:forEach var="subSys" items="${subSystems}"> ${subSys.value.name} ${subSys.value.id} </c:forEach> 呵呵,再看看一个精简的map数据的展示功能: bboss <pg:map actual="${publicItem.workspacecontentExtendAttribute}"> <pg:mapkey /> <pg:cell/> </pg:map> jstl <c:forEach var="attribute" items="${publicItem.workspacecontentExtendAttribute}"> ${attribute.key} ${attribute.value} </c:forEach> 复杂一点的: bboss <pg:map actual="${publicItem.localeHeadimgs}" > <pg:notequal expression="{rowid}" value="0">,</pg:notequal><pg:mapkey/>:<pg:cell/> </pg:map> jstl <c:forEach var="headimg" items="${publicItem.localeHeadimgs}" varStatus="status"> ${headimg.key}:${headimg.value}${status.index != fn:length(publicItem.localeHeadimgs)-1 ? "," : ""} </c:forEach> bboss的数据展示标签的详细使用,请参考文档《bbossgroups标签库使用大全 》。 4.总结 通过本文几个简单的功能对比,可以看出jstl和bboss的基本功能都非常丰富,从对比中可以看出bboss标签展示数据和实现逻辑判断等功能时语义更加明确,代码更加通俗易懂。(本文观点仅代表作者本人观点,欢迎大家讨论交流) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-09-17
为啥要另外设计套标签,弄得一点都不直观,还增加学习的成本
|
|
返回顶楼 | |
发表时间:2013-09-17
最后修改:2013-09-18
-------------------------------
|
|
返回顶楼 | |
发表时间:2013-09-18
dargoner 写道 为啥要另外设计套标签,弄得一点都不直观,还增加学习的成本
就是为了衬托jstl呀 |
|
返回顶楼 | |
发表时间:2013-09-18
您好 在您的官网http://www.bbossgroups.com/上的bbossgroups-3.6.2.zip 下载后总是解压出错。是不是没上传完整啊。而且文件大小比3.6.0小太多了。一个80多兆,一个280多兆。请检查一下吧。
|
|
返回顶楼 | |
发表时间:2013-09-19
dsf007 写道 您好 在您的官网http://www.bbossgroups.com/上的bbossgroups-3.6.2.zip 下载后总是解压出错。是不是没上传完整啊。而且文件大小比3.6.0小太多了。一个80多兆,一个280多兆。请检查一下吧。
具体下载方法请参考文档《bbossgroups 项目下载地址》 |
|
返回顶楼 | |
发表时间:2013-09-19
最后修改:2013-09-19
zhukewen_java 写道 就是为了衬托jstl呀 bboss标签库绝对不是为了衬托jstl而开发的,在我们的项目里面bboss标签库完全取代了jstl标签库,本文中涉及的bboss标签只是庞大的bboss标签库冰山一角,bboss中有自己的树标签、分页标签、列表标签、bean信息展示标签、数据库操作标签、国际化标签、逻辑判断标签、令牌标签等等。 |
|
返回顶楼 | |