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) 数据库项与计算 #### 一、概述 Avaya™ Call Management System (CMS) 是一款专为电信企业设计的管理工具,它能够帮助企业监控并优化其通信网络的性能。该系统通过收集...
【os_system(通用CMS管理系统)】是一个基于Java技术栈,特别是Spring Boot框架构建的全功能内容管理系统。这个系统包括了数据库设计、前端用户界面以及后台管理功能,为内容的发布、管理和展示提供了一站式的解决...
根据提供的文件信息,我们可以看到这些内容主要涉及到 PHP 标签及其在特定 CMS(内容管理系统)中的应用,这里可能是指基于 PHP 开发的 DedeCMS 内容管理系统中的自定义标签用法。接下来,我们将逐一解析这些标签的...
Error #541: 'NordicSemiconductor::Device:Startup:8.27.0' component is missing (previously found in pack 'NordicSemiconductor.nRF_DeviceFamilyPack_NordicLicense')
以上标签是ASPCMS中常见且重要的组成部分,通过合理使用这些标签,可以极大地提高网站的动态性、交互性和用户体验,同时简化开发过程,提升效率。对于开发者而言,熟悉并掌握这些标签的应用,是进行高效网站建设和...
### AspCms标签大全解析 #### 一、站点基本信息标签 AspCms系统提供了丰富的站点基本信息标签,用于在页面上展示站点的基本属性。这些标签对于构建网站的基础框架至关重要。 1. **{aspcms:sitepath}**:表示网站...
ASPCMS是一款基于ASP开发的内容管理系统,它提供了一系列的标签供用户在模板制作时使用,以方便地调用网站信息和内容。以下是对ASPCMS标签的详细解释: 1. 网站通用标签: - `{aspcms:sitepath}`:返回网站的终极...
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:重新加载页面后,...
本文将详细解读AspCms2.0的标签大全,涵盖其主要功能标签、页面导航标签、站点信息标签以及内容展示标签等,旨在为用户提供全面的AspCms2.0标签使用指南。 一、站点信息标签 站点信息标签主要用于获取网站的基本...
《AspCms2标签大全解析》 在深入解析AspCms2的标签系统之前,我们先简要了解一下AspCms2。AspCms2是一款基于ASP技术的网站内容管理系统,它以其强大的功能、灵活的配置以及丰富的模板支持而著称,尤其适合于中小型...
... ...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.
- **知识点16:模板使用**:通过标签复用相同或相似的视图结构。 ##### 第二节:为程序加入底部菜单导航 - **知识点17:基础内容导航**:设计并实现底部导航栏,支持页面间的跳转功能。 ##### 第三节:实现文章...
### ASPCMS标签详解:构建高效网站管理系统的利器 在当今数字化时代,网站的建设和管理对于企业和个人来说至关重要。一个高效、灵活且易于操作的网站管理系统(CMS)是支撑这一需求的关键。ASPCMS,作为一款基于ASP...
Pratt Content-Management-System(CMS)是一款开源的软件解决方案,专为管理和发布数字内容而设计。这款系统的核心目标是简化网站内容的创建、编辑和维护过程,同时提供了一套强大的工具来支持这一过程。其开源特性...
该书《Orchard CMS: Up and Running》由John Zablocki编写,于2012年出版,是一本详细介绍如何使用Orchard CMS进行网站建设的指南。本书适用于希望使用Orchard CMS构建和管理网站的开发人员和技术人员。 #### 二、...
ASPCMS是一款基于ASP开发的内容管理系统,其V2版本提供了丰富的标签功能,使得开发者和网站管理员可以更加便捷地管理和展示网站内容。这份“ASPCMS V2版本 标签手册”是一个极其重要的参考资料,它详细介绍了ASPCMS...
... ...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.
根据给定的信息,本文将对科讯CMS中的各种标签进行详细的解释与说明。科讯CMS是一种功能强大的内容管理系统,能够帮助用户快速搭建和管理...对于科讯CMS的使用者来说,熟练掌握这些标签的应用是必不可少的技能之一。