在上次初次使用Freemarker作为模版后,我再次使用它。这次的需求是:
xml文档的某个节点的属性A和其一个子节点的某个属性B有关联,属性B的值需要随着属性A的值变化。而属性A的值有4个值,现在需要把这个节点输出4次,每次属性A和B的值分别为4个值中的一个。
面对这个需求,既然在freemarker模板中${rtcList}表示rtcList中的单个元素循环,那就试下${loscList[0]}是不是会被解析城loscList中单个元素(每个元素都是数组)这个数组内的一个值的循环。实验结果很喜人,如我所想。既然如此,那我就开始把属性A的值作为数组a[]的a[0],属性B的值存入a[1]。然后问题就解决了。
代码
public List<String[]> deallOSCandidateList(List<String> list){
List lsda=new ArrayList();
for(String i in list){
String[] da=new String[2];
da[0]=i;
String sa="1";
2.step(i.toInteger()+1,1){
sa=sa+","+it
}
da[1]=sa;
lsda.add(da);
}
return lsda;
}
模版
<RoomStay RoomTypeCode="${rtcList}" RatePlanCode="${rpcList}" LengthOfStay="${loscList[0]}" RoomCount="9">
<#-- input startdate and enddate -->
<DateSpan Start="${Start}" End="${End}"/>
<RoomRate DayPattern="${loscList[1]}">
</RoomRate>
</DateSpan>
</RoomStay>