標籤:style blog http io color ar os 使用 for
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
Velocity寫法注意