接着上一篇OpenCms自定义结构化类型的创建,我们来进一步完善自定义的“TestNews”类型,主要是完成对自定义字段的数据验证、数据映射和默认值设置,完善后的XSD代码如下:
<
xsd:schema
xmlns:xsd
="http://www.w3.org/2001/XMLSchema"
elementFormDefault
="qualified"
>

<
xsd:include
schemaLocation
="opencms://opencms-xmlcontent.xsd"
/>
<
xsd:element
name
="TestNewss"
type
="OpenCmsTestNewss"
/>
<
xsd:complexType
name
="OpenCmsTestNewss"
>
<
xsd:sequence
>
<
xsd:element
name
="TestNews"
type
="OpenCmsTestNews"
minOccurs
="0"
maxOccurs
="unbounded"
/>
xsd:sequence>
xsd:complexType>
<xsd:complexType name="OpenCmsTestNews">
<xsd:sequence>
<xsd:element name="Title" type="OpenCmsString" />
<xsd:element name="Date" type="OpenCmsDateTime" />
<xsd:element name="Text" type="OpenCmsHtml" />
xsd:sequence>
<xsd:attribute name="language" type="OpenCmsLocale" use="required"/>
xsd:complexType>
<xsd:annotation>
<xsd:appinfo>
<resourcebundle name="org.opencms.testnews.workplace"/>
<preview uri="${previewtempfile}" />
<validationrules>
<rule element="Title" regex="^.*[S]+.*$" message="${key.editor.errormessage.TestNews.mustnotempty}"/>
validationrules>
<mappings>
<mapping element="Title" mapto="property:Title" />
mappings>
<defaults>
<default element="Date" value="${currenttime}"/>
defaults>
xsd:appinfo>
xsd:annotation>
xsd:schema>
数据验证由正则表达式完成,如上述代码中的regex="^.*[S]+.*$" ,提示信息由“message="${key.editor.errormessage.TestNews.mustnotempty}”设置,需要在worlkplace.properties中增加 “editor.errormessage.TestNews.mustnotempty=标题不允许为空!”,这样在编辑TestNews类型新闻时,如果为空,编辑器即会提示错误信息,如下图:

映射字段Title信息至属性“Title,也就是在工作区中右侧资源列表中的标题字段显示的就是TextNews中标题信息的内容。
设置字段Date默认值中,value="${currenttime}为系统定义的宏,取得是系统的当前时间。
(谢谢关注OpenCms——中文资源第一博客http://blog.youkuaiyun.com/qianxuncms/,欢迎与作者直接交流,共同进步。MSN:qianxuncms@hotmail.com,QQ:9165456)
本文介绍如何在OpenCms中完善自定义结构化类型“TestNews”,包括字段验证、数据映射及默认值设置。
1万+

被折叠的 条评论
为什么被折叠?



