OpenCms 7.02 新增加了一个非常有用的标签
<cms:contentaccess> ,但是好像官方一直没有给出它的用法的说明。那么今天就浅谈一下这个标签的用法。
在官方的版本说明里面是这样说的:“Added <cms:contentaccess> tag for easy access to XML contents with the JSP EL inside a <cms:contentload> block.”
也就是说,这个标签主要是让你很容易的在 <cms:contentload> 标签代码段里面使用 JSP 的 EL 表达式来访问 XML 结构化内容。
那么,原来我们访问 XML 内容的时候是什么样一种方式呢?请看下面示例代码(更多的可以查看"/system/modules/org.opencms.frontend.templateone.modules/pages/"下面关于 news,jobs等类型的显示模板的页面代码):
<cms:contentload collector="singleFile" param="%(pageContext.detailfile)" editable="true"> ...... <cms:contentshow element="Title" /> ...... </cms:contentload>
当然,我举的这个例子可能是比较简单,大家应该都看得出来,就是用来显示文章的一个标题“Title”,也就是xml里面的"Title"节点的值。
在 OpenCms 7.0.2 里面引入<cms:contentaccess>标签以后呢,我们就可以使用下面的方式来使用:
<cms:contentload collector="singleFile" param="%(pageContext.detailfile)" editable="true">
<cms:contentaccess var="content" />
......
<c:out value="${content.value['Title']}"
......
</cms:contentload> 就象上面看到的,在<cms:contentload>代码段中使用 <cms:contentaccess> 标签以后,就可以直接使用类似
<c:out value="${content.value['Title']}" 这样的 JSTL 代码 <
c:out> 以及 EL 表达式 ${content.value['Title']} 来输出得到的数据。
也就是说,原来在 OpenCms 的标签,或 JSTL 里面使用 EL 表达式的时候,表达式使用的标量可能是个麻烦事情。就大家在 TemplateOne 的代码里面看到的那样,如果你想使用类似
<c:out value="${content.value['Title']}" 这样的方法输出数据,但是没有<cms:contentload> 可用的话,就必须向原来一样使用 <c:set var="Title" value="" /> 这样的语法来定义变量。
可能在这个例子里面还不能体现出来所说的“easy access to XML contents”的好处。
那么,当你使用
<cms:contentshow element="Title" /> 来输出标题的时候,如果标题为空的话,你如何判断呢?只好再去使用 <cms:contentcheck> 标签 <cms:contentcheck ifexists="Title"> 来判断了。而实际上这样的判断使用 JSTL 中的 <c:if test ...> 就可以做到。
譬如,你可以使用
<c:if test="${!content.value['Title'].isEmptyOrWhitespaceOnly}">
<c:out value="${content.value['Title']}" />
</c:if>
来代替下面的这段代码:
<cms:contentcheck ifexists="Title">
<cms:contentshow element="Title" />
</cms:contentcheck>
这样效果会更好一点,为什么这样说呢?因为 contentcheck 的可选值只有:ifexists,ifexistsone,ifexistsall,ifexistsnone。也就是说煤你仅仅可以判断都这一步。而使用<cms:contentload>标签以后,你就可以有更多的选择。
更重要的是,使用这个标签以后,你使用OpenCms做二次开发学习的标签可能就又少了几个,如果你对JSTL和EL已经很熟悉的话,恭喜你,你可以更方便的上手了。
至于这个标签的更详细的用法,有兴趣的可以查看API中
org.opencms.jsp.util.CmsJspContentAccessBean 和
org.opencms.jsp.util.CmsJspContentAccessValueWrapper
这两个相关的类,相信会游更大的收获。
顺便说一下,我以前对标签不是很熟悉的时候,使用API来读取和操作XML内容,那可是相对麻烦的事情呢。
所以说,OpenCms 还是越来越好用了。还是 java 开源内容管理系统的老大。所以,我推荐大家使用它!
我的相关日志:
2007-03-23 |
[转]OpenCms for MySql 安装图解2007-03-23 |
[转][图文]OpenCms VFS plugin for Eclipse 安装与使用2008-03-21 |
<cms:contentload>标签的使用2007-12-14 |
<cms:editable>标签的使用2007-12-13 |
<cms:contentshow>标签的使用2007-12-12 |
<cms:contentloop> 标签的使用2007-12-11 |
<cms:contentinfo>标签的使用2007-12-10 |
<cms:contentcheck>标签的使用2007-06-19 |
OpenCms的<cms:info>标签2007-04-16 |
再次讨论关于OpenCms的label标签的用法2007-04-10 |
直接用OpenCms的API而不是标签来得到资源信息2007-03-23 |
[转]OpenCms JSP标签详解——cms:user标签
分享到:
相关推荐
Avaya™ Call Management System (CMS) Database Items and Calculations
完整的cms系统,包括数据库,前端页面和后端。直接可以用eclipase导入meavn项目,用navicat链接本地mysql即可进行调试。
Error #541: 'NordicSemiconductor::Device:Startup:8.27.0' component is missing (previously found in pack 'NordicSemiconductor.nRF_DeviceFamilyPack_NordicLicense')
Laravel Wordpress CMS 版本Laravel 7.1 版本Laravel Wordpress CMS 1.0欢迎来到GitHub Pages Laravel Admin相同的CMS Wordpress :) 演示链接: : 安装与设定###选项1: php artisan install###选项2: 第一步: ...
Subrion CMS是一个免费的开源内容管理系统,这允许您为任何目的构建网站,从博客到企业大型门户。Subrion CMS 4.1.4 更新日志:2017-05-16错误#125:为多语言网站生成不正确的站点地图;错误#400:重新加载页面后,...
... ...Master database design principles Write robust, maintainable, best practice code ...CMS) And much more! This book is suitable for beginner level web developers. No prior PHP experience is needed.
Pratt CMS是一个内容管理系统,它提供了一个简单的嵌入式WYSIWYG html编辑器。 数据库侧,测试环境和模块化系统的用户权限只是其中一些新增功能。
... ...Master database design principles Write robust, maintainable, best practice code ...CMS) And much more! This book is suitable for beginner level web developers. No prior PHP experience is needed.
##易于使用:##### Visual Studio:要安装Kooboo.CMS.Toolkit,请在运行以下命令 PM> Install-Package Kooboo.CMS.Content.UserKeyGenerator.Chinese >``` >#####Web server: >click [here]...
CMS标签大全CMS标签大全CMS标签大全CMS标签大全CMS标签大全CMS标签大全CMS标签大全
作为国内最知名的Java开源CMS系统,我们一直秉承开源、易用、高性能、安全的系统开发原则,并以作国内优秀的开源网站管理系统为己任,始终坚持不懈地为用户提供强大的Java技术web应用服务。 JEECMS v2.4.2 正式版...
6、{aspcms:cimages}全站可用 和无法使用if 7、搜索页{aspcms:topsortid} 报错 8、后台关闭英文栏目名称 出错 9、后台用户列表 分页错误 10、自定义参数 修改 11、简单版后台无法显示三级栏目 12、简单版后台单篇...
Avaya Call Management System (CMS) 是Avaya的运营效率解决方案,为客户提供客户服务中心呼叫信息管理工具-通过监控,测量,管理和报告呼叫中心的工作状况来提高其效率
WEBInsta:trade_mark:CMS为想要使自己的网站存在感的小型企业和个人观众提供了动态的网站建设解决方案。 它为不了解html或PHP的人们提供了一个强大的系统。
CMS,CMS标签提取,CMS标签提取方法,CMS核心标签提取
ASP.NET CMS:管理模板 技术 ASP.NET,ASP.NET MVC,ASP.NET Web窗体 主题 HTML5,用户界面,建筑和设计,XAML和HTML的转换,企业内容管理(ECM)
Cheet JS插件0.1.1 一个简单,功能强大的jQuery画廊。 目前处于实验阶段我该如何安装? 下载并安装 。 下载 ,将其复制到您... 该插件使用由 。 它是根据许可的。 有关Cheet.js的完整文档,请访问其反馈欢迎所有反馈。
1、栏目分类增加Keywords和Description字段,分别在模板中使用$KeyWords$和$Description$标签获取内容,增强对搜索引擎的友好。 2、文章增加“摘要”字段及对应标签:$demons$,添加文章时可选择填写文章摘要,否则...
jeecms 版是一款集新闻管理、图库管理、视频管理、下载系统、作品管理、产品发布及留言板于一体的综合性CMS系统。 JEECMS一直秉承用户体验、系统性能和实际应用为第一的研发思路,让jeecms的功能不断丰富的同时,更...
#Shelf CMS 使用漂亮的管理和类似 cms 的功能增强 Flask 微框架##Uses ###Dynamic 网站管理:基于模型创建自定义管理。 以下功能可以从头开始使用: 可扩展的用户系统:注册、登录、丢失密码、权限 工作流系统:...