OpenCms自定义结构化类型的高级设置

来源:互联网 发布:手机个人信息查询软件 编辑:程序博客网 时间:2024/04/29 21:37

  接着上一篇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}" />
            
<!-- 验证开始,验证标题(Title)不能为空 -->
            
<validationrules>
                
<rule element="Title" regex="^.*[S]+.*$"  message="${key.editor.errormessage.TestNews.mustnotempty}"/>
            
<!-- 验证结束 -->
            
</validationrules>
            
<!-- 映射开始,映射字段Title信息至属性“Title” -->
            
<mappings>
                
<mapping element="Title" mapto="property:Title" />
            
</mappings>
            
<!-- 映射结束 -->
            
<!-- 默认值设置开始,设置字段Date默认值为当前时间 -->
            
<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.csdn.net/qianxuncms/,欢迎与作者直接交流,共同进步。MSN:qianxuncms@hotmail.com,QQ:9165456)

原创粉丝点击