zoukankan      html  css  js  c++  java
  • Velocity写法注意


    1.$Proerty与$!{Property}的区别
    比如:
    简单的key-value数据格式情况下
    a.<C_APP_NME>$Applicant_CAppNme</C_APP_NME>,不是对象,写法正确!
    b.<C_APP_NME>$!{Applicant_CAppNme}</C_APP_NME>,不是对象,写法正确,建议使用写法!
     
    点评:a,b这两种写法都行,区别是如果Applicant_CAppNme的值为空,a写法会将$Applicant_CAppNme语法显示出来。所以,这种情况写法的运用最好使用b(因为如果表达式中需要引用外部对象方法,这种就不好办了)。另外一点区别注意,$!{}其中的!表示若名称Applicant_CAppNme值为空默认将值设置为空字符串,$!{#名字}表示如果#名字值为空,将显示为空,$#名字表示如果#名字值为空,将显示表达式$#名字。所以,最好写$!{#名字}格式!
     
    对象数据格式情况下
    a.$!{app.getComponent("base").get(0).getCProdNo()},是对象,写法正确,建议写法!
    b.$app.getComponent("base").get(0).getCProdNo(),是对象,由于有多级引用关系也就是多次获取值,所以此写法获取不到值,写法错误!
    点评:建议采用a写法,既然是对象,会遇到很多想得到对象某个属性值的时候,有引用关系存在,所以采用a,重要一点是由于这里是 "a对象.a对象的属性对象b.b对象.b属性. ...",多级引用关系一定要用$!{}写法才能获取到!
     
    a.$!{app.getComposition()},写法正确,建议写法!
    b.$!{app.getComposition()},写法正确!
    c.$app.composition,写法正确!
    d.$app.getComposition(),写法正确,建议写法!
    点评:意思是取app对象的composition属性值,前提是必须有获取此属性值的get方法,如果你直接使用get方法去,get命名格式无所谓,但是如果是$app.composition,那get方法名一定要规范是getComposition了,也就是get属性名,建议使用带get的写法
     
    语法foreach情况下#foreach ($result in $app.getComponent($cvrg))
    a.$app.getComponent($cvrg) ,写法正确,在foreach的情况下建议写法,较直观!
    b.$!{app.getComponent($cvrg)} _2,写法正确!

     
     
    2.符号"."是Velocity保留语法符号,用于对象引用时,比如$Object.property,建议命名中不要包含它
    Applicant_CAppNme 命名正确! Applicant.CAppNme 命名错误,会显示空值!
     
    3.语法#if判断的字符串值比较用单引号或双引号都可以
    a.#if($!{MESSAGESTATUSCODE}=="1"),写法正确!
    b.#if($!{MESSAGESTATUSCODE}=='1'),写法正确!
    点评:MESSAGESTATUSCODE是key,它的值是一个字符串
     
    实战环境下的模版:
     REQUEST_15.xml
    <?xml version="1.0" encoding="GBK"?><!--   发送报文模板  -->
    <PACKET type="REQUEST" version="1.0">
    
        #set($base="PlyMain")
        #set($cvrg="Cvrg")
        #set($tgt="Tgt")
        #set($tgts="EntTgt")
        #set($applicant="Applicant")
        #set($insured="Insured")
        #set($bnfc="Bnfc")
        
        <HEAD>
            <REQUEST_TYPE>$!{REQUEST_TYPE}</REQUEST_TYPE>
            <USER>$!{USER}</USER>
            <PASSWORD>$!{PASSWORD}</PASSWORD>
        </HEAD>
        <BODY>
            <BASE>
                <!--   ZZZG1姓名  -->
                <C_A2PP_NME>$!{app.getComponent($applicant).get(0).getCAppNme()}</C_A2PP_NME>
                <!--  受ZG1姓名   -->
                <C_BNFC_PRSN_NME>$!{app.getComponent($bnfc).get(0).getCBnfcNme()}</C_BNFC_PRSN_NME>
                
                <C_INSRNT_CNM>$!{app.getComponent($bnfc).get(0).getCInsuredNme()}</C_INSRNT_CNM>
                
                <T_RATIO_TYPE>001</T_RATIO_TYPE>
    
                                                    
                <C_BSNS_TYP>19002</C_BSNS_TYP>
                <C_AGRI_TYPE>0</C_AGRI_TYPE>
                
                <MMN_PRM>$!{app.getComponent($base).get(0).getNPrm()}</MMN_PRM>
                
    
                
                <C_BU1SINESS_NO>$!{app.getComponent($base).get(0).getCBusiNo()}</C_BU1SINESS_NO>
    
                <C_OPER_CDE>103990001</C_OPER_CDE>
                
        
                <C_APP_MOBILE>$!{app.getComponent($applicant).get(0).getCAppMobile()}</C_APP_MOBILE>
     
                <C_AGENCY_PR1OF_ID></C_AGENCY_PR1OF_ID>
                <C_SU2BBANK_NO />
                
                <N_C3MM_PROP></N_C3MM_PROP>
            </BASE>
            <TGT><!--prodduce-->
    
                <C_YL2>$!{app.getComponent($base).get(0).getCBicNo()}</C_YL2>
                #*
                    这里可以输入注释内容
                *#
                #if($!{app.getComponent($base).get(0).getCProdNo()}=='0A27')
                    $!{TX_C_SCHOOL_NA1ME}
                    $!{TX_CD_COUN1TRY}
                    $!{TX_CD_TGT_FLD117}
                #end    
                #if($!{app.getComponent($base).get(0).getCProdNo()}=='0A01')
                    $!{TX_CA_BUILD_STR}
                    $!{TX_CA_PROP2ERTY_ADDR}
                #end    
                #if($!{app.getComponent($base).get(0).getCProdNo()}=='0B09' || $!{app.getComponent($base).get(0).getCProdNo()}=='0B10')
                    $!{TX_C_HOU2SE_STR}
                #end            
                #if($!{app.getComponent($base).get(0).getCProdNo()}=='06C9')
                    $!{TX_C_COU3NTRY}
                #end            
                #if($!{app.getComponent($base).get(0).getCProdNo()}=='0D19' || $!{app.getComponent($base).get(0).getCProdNo()}=='0D21' || $!{app.getComponent($base).get(0).getCProdNo()}=='06D5')
                    $!{TXB_C_TG4T_FLD7}
                    $!{TXB_P_NUM}
                    $!{TXB_C_YL2}
                #end            
            </TGT>
            <AA_CUSTOMER>
    
                <MMN_APP_AGE>$!{app.getComponent($applicant).get(0).getCAppAge()}</MMN_APP_AGE>
    
                
                <C_BNFC_NME>$!{app.getComponent($insured).get(0).getCBnfcNme()}</C_BNFC_NME>
                <!--   123ZZG1与456ZZG1的关系=资助G1与456ZZD!G1关系,0627ZZ2品才有此字段发送   -->
    <!--            <C_APP_DRELATION>$!{app.getComponent($applicant).get(0).getCRelation()}</C_APP_DRELATION>-->
                #*
                  这里可以输入注释内容 
                *#
                #if($!{app.getComponent($base).get(0).getCProdNo()}=='0Q27')
                    $!{TX_C_SUPPORT_NAME}
                    $!{TX_C_RELATION}
                #end
            </AA_CUSTOMER>
            <!--t_bic_check1_rdr -->
            <RDR>
                ## D!ZZ3信息,注释内容
                #foreach ($result in $app.getComponent($cvrg))
                <INSRNC>
    
                    <N1_PERIOD>$!{result.getNPeriod()}</N1_PERIOD>
                    #*
                        ZZ2品注释内容
                    *#
                    #if($!{app.getComponent($base).get(0).getCProdNo()}=='0D7')
                        <C_YLA13>$!{result.getNDductRate()}</C_YLA13>
                        <C_YLD20>$!{result.getCLiabScope()}</C_YLD20>
                    #end            
                    #if($!{app.getComponent($base).get(0).getCProdNo()}=='08A1')
                        <C_TGT_OBJ1_CDE>$!{result.getCTgtTyp()}</C_TGT_OBJ1_CDE>
                    #end            
                </INSRNC>
                #end
            </RDR>
        </BODY>
    </PACKET>
    View Code
  • 相关阅读:
    页面打开 抛出w3wp.exe 中发生未处理异常
    link
    带下拉子菜单的导航菜单
    横向列表菜单
    Codeforces Round #640 (Div. 4)
    【剑指Offer】06. 从尾到头打印链表
    【剑指Offer】65. 不用加减乘除做加法
    【剑指Offer】15. 二进制中1的个数
    【剑指Offer】03. 数组中重复的数字(哈希)
    【LeetCode】50. Pow(x, n)(快速幂)
  • 原文地址:https://www.cnblogs.com/svennee/p/4079037.html
Copyright © 2011-2022 走看看