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

  接着上一篇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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值