??xml version="1.0" encoding="utf-8" standalone="yes"?>国产99精品,成人久久久精品乱码一区二区三区,国产三线在线http://www.aygfsteel.com/pepsixp/archive/2005/09/05/12124.html阿姆斯壮阿姆斯壮Mon, 05 Sep 2005 15:05:00 GMThttp://www.aygfsteel.com/pepsixp/archive/2005/09/05/12124.htmlhttp://www.aygfsteel.com/pepsixp/comments/12124.htmlhttp://www.aygfsteel.com/pepsixp/archive/2005/09/05/12124.html#Feedback0http://www.aygfsteel.com/pepsixp/comments/commentRss/12124.htmlhttp://www.aygfsteel.com/pepsixp/services/trackbacks/12124.html当我刚开始编写和数据库有关的单元试Ӟq道这些测试代码在下次q行的时候可能无法完全通过Q因为它和数据紧密的联系在一P但也想不Z个好的解x案。它只保证了当时的代码是没有问题的,一个星期后Q不Q可能在q次单元试q行完后Q就应该丢进垃圾桶了?BR>q种吃力不讨好的行ؓ持箋了一D|_直到引入了DbUnit之后。它实能够的保证数据库处于一个稳定的状态,无须对其q行人工q预Q操作也非常单?BR>
创徏一?STRONG>DbUnit Test Case
。。?BR>



阿姆斯壮 2005-09-05 23:05 发表评论
]]>
学习FreeMarkerQ二Q?/title><link>http://www.aygfsteel.com/pepsixp/archive/2005/03/11/1941.html</link><dc:creator>阿姆斯壮</dc:creator><author>阿姆斯壮</author><pubDate>Fri, 11 Mar 2005 03:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/pepsixp/archive/2005/03/11/1941.html</guid><wfw:comment>http://www.aygfsteel.com/pepsixp/comments/1941.html</wfw:comment><comments>http://www.aygfsteel.com/pepsixp/archive/2005/03/11/1941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pepsixp/comments/commentRss/1941.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pepsixp/services/trackbacks/1941.html</trackback:ping><description><![CDATA[<P><STRONG>用户定义指o</STRONG>Q用@W合来调?BR>有两U不同的cdQMacro(?和transform(传递器)QMacro是在模板中用macro指o定义Q而transform是在模板外由E序定义(基本上都是基于Java?Q这里通过Macro来介l自定义指o?BR>例一Q?BR><#macro greet><BR>  <font size="+2">Hello Joe!</font><BR></#macro>  <BR>使用Q?lt;@greet><<A>/@greet</A>> ?<@greet/><BR>l果Q?lt;font size="+2">Hello Joe!</font></P> <P>参数Q在macro指o中可以在宏变量之后定义参?BR>例二Q?BR><#macro greet person><BR>  <font size="+2">Hello ${person}!</font><BR></#macro> <BR>使用Q?lt;@greet person="Fred"/> and <@greet person="Batman"/> <BR>l果Q?<font size="+2">Hello Fred!</font> and <font size="+2">Hello Batman!</font></P> <P>macro可以有多个参敎ͼ参数的次序是无关的,在macro指o中只能用定义的参数Qƈ且必d所有参数赋|可以在定义参数时指定~省|</P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#macro </SPAN><SPAN style="COLOR: #ff0000">greet person color</SPAN><SPAN style="COLOR: #0000ff">="black"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">font </SPAN><SPAN style="COLOR: #ff0000">size</SPAN><SPAN style="COLOR: #0000ff">="+2"</SPAN><SPAN style="COLOR: #ff0000"> color</SPAN><SPAN style="COLOR: #0000ff">="${color}"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Hello ${person}!</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">font</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#macro</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV> <P><BR><STRONG>在自定义指o嵌套内容</STRONG>Q模板片断中使用<#nested>指o</P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#macro </SPAN><SPAN style="COLOR: #ff0000">border</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">table </SPAN><SPAN style="COLOR: #ff0000">border</SPAN><SPAN style="COLOR: #0000ff">=4 </SPAN><SPAN style="COLOR: #ff0000">cellspacing</SPAN><SPAN style="COLOR: #0000ff">=0 </SPAN><SPAN style="COLOR: #ff0000">cellpadding</SPAN><SPAN style="COLOR: #0000ff">=4><tr><td><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    </SPAN><SPAN style="COLOR: #ff0000"><#nested</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">tr</SPAN><SPAN style="COLOR: #0000ff">></</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">></</SPAN><SPAN style="COLOR: #800000">table</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#macro</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV></DIV> <P>使用Q?lt;@border>The bordered text<<A>/@border</A>><BR>l果Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">table </SPAN><SPAN style="COLOR: #ff0000">border</SPAN><SPAN style="COLOR: #0000ff">=4 </SPAN><SPAN style="COLOR: #ff0000">cellspacing</SPAN><SPAN style="COLOR: #0000ff">=0 </SPAN><SPAN style="COLOR: #ff0000">cellpadding</SPAN><SPAN style="COLOR: #0000ff">=4><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #ff0000"><tr</SPAN><SPAN style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">The bordered text<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">tr</SPAN><SPAN style="COLOR: #0000ff">></</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">></</SPAN><SPAN style="COLOR: #800000">table</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV></DIV> <P><#nested>指o可以被多ơ调用:</P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#macro </SPAN><SPAN style="COLOR: #ff0000">do_thrice</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#nested</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#nested</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#nested</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#macro</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV></DIV> <P>使用Q?BR><@do_thrice>Anything.<<A>/@do_thrice</A>>  <BR>l果Q?BR>Anything.<BR>Anything.<BR>Anything. </P> <P><STRONG>注意</STRONG>Q嵌套内Ҏ无法讉K到macro中的局部变量的?BR>例如Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#macro </SPAN><SPAN style="COLOR: #ff0000">repeat count</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#local </SPAN><SPAN style="COLOR: #ff0000">y </SPAN><SPAN style="COLOR: #0000ff">= "test"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#list </SPAN><SPAN style="COLOR: #ff0000">1..count as x</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    ${y} ${count}/${x}: </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#nested</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#list</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#macro</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">@repeat </SPAN><SPAN style="COLOR: #ff0000">count</SPAN><SPAN style="COLOR: #0000ff">=3>${y?default("?")} </SPAN><SPAN style="COLOR: #ff0000">${x?default("?")} ${count?default("?")}</@repeat</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV></DIV> <P>l果Q?BR>test 3/1: ? ? ?<BR>test 3/2: ? ? ?<BR>test 3/3: ? ? ?</P> <P><BR>下面是一个嵌套用自定义指o的例子:</P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">@border</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">ul</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">@do_thrice</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">li</SPAN><SPAN style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">@greet </SPAN><SPAN style="COLOR: #ff0000">person</SPAN><SPAN style="COLOR: #0000ff">="Joe"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">@do_thrice</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">ul</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">@border</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> </SPAN></DIV></DIV> <P>l果Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">table </SPAN><SPAN style="COLOR: #ff0000">border</SPAN><SPAN style="COLOR: #0000ff">=4 </SPAN><SPAN style="COLOR: #ff0000">cellspacing</SPAN><SPAN style="COLOR: #0000ff">=0 </SPAN><SPAN style="COLOR: #ff0000">cellpadding</SPAN><SPAN style="COLOR: #0000ff">=4><tr><td><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top> </SPAN><SPAN style="COLOR: #ff0000"><ul</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top> </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">li</SPAN><SPAN style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">font </SPAN><SPAN style="COLOR: #ff0000">size</SPAN><SPAN style="COLOR: #0000ff">="+2"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Hello Joe!</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">font</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top> </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">li</SPAN><SPAN style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">font </SPAN><SPAN style="COLOR: #ff0000">size</SPAN><SPAN style="COLOR: #0000ff">="+2"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Hello Joe!</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">font</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top> </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">li</SPAN><SPAN style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">font </SPAN><SPAN style="COLOR: #ff0000">size</SPAN><SPAN style="COLOR: #0000ff">="+2"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Hello Joe!</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">font</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top> </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">ul</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">tr</SPAN><SPAN style="COLOR: #0000ff">></</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">></</SPAN><SPAN style="COLOR: #800000">table</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">  </SPAN></DIV></DIV> <P>在macro?STRONG>使用循环变量</STRONG>Q作为nested指o的参C递@环变量的实际|而在调用用户定义指oӞ?lt;@?gt;开始标记的参数后面指定循环变量的名字:</P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#macro </SPAN><SPAN style="COLOR: #ff0000">repeat count</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#list </SPAN><SPAN style="COLOR: #ff0000">1..count as x</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#nested </SPAN><SPAN style="COLOR: #ff0000">x, x/2, x</SPAN><SPAN style="COLOR: #0000ff">==count><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #ff0000"></#list</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#macro</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">@repeat </SPAN><SPAN style="COLOR: #ff0000">count</SPAN><SPAN style="COLOR: #0000ff">=4 </SPAN><SPAN style="COLOR: #ff0000">; c, halfc, last</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  ${c}. ${halfc}</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#if </SPAN><SPAN style="COLOR: #ff0000">last</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> Last!</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#if</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><A>/</SPAN><SPAN style="COLOR: #800000">@repeat</SPAN><SPAN style="COLOR: #0000ff"></A></SPAN></DIV></DIV> <P> l果Q?BR>1. 0.5<BR>2. 1<BR>3. 1.5<BR>4. 2 Last!</P> <P><STRONG>注意</STRONG>Q@环变量和用户定义指o开始标记指定的数目可以不同Q调用时指定@环变量,则多指定的g可见Q调用时多指定@环变量,多余的@环变量不会被创徏?BR><BR><STRONG>模板中的变量</STRONG>Q有三种cdQ?BR>1.) <STRONG>plain(全局)变量</STRONG>Q可以在模板的Q何地方访问,包括使用include指o插入的模板,使用assign指o创徏和替?BR>2.) <STRONG>局部变?/STRONG>Q在macro中有效,使用local指o创徏和替?BR>3.) <STRONG>循环变量</STRONG>Q只能存在于指o的嵌套内容,由指?如list)自动创徏Q宏的参数是局部变量,而不是@环变?/P> <P>用assign指o创徏和替换的例子Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000">x </SPAN><SPAN style="COLOR: #0000ff">= 1>  </SPAN><SPAN style="COLOR: #ff0000"><#-- create variable x --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${x}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000">x </SPAN><SPAN style="COLOR: #0000ff">= x </SPAN><SPAN style="COLOR: #ff0000">+ 3</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">replace variable x --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${x}  </SPAN></DIV></DIV> <P>l果Q?BR>1<BR>4</P> <P>局部变量隐?而不是覆?同名的plain变量Q@环变量隐藏同名的局部变量和plain变量Q下面是一个例子:</P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000">x </SPAN><SPAN style="COLOR: #0000ff">= "plain"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>1. ${x}  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">we see the plain var. here --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">@test</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>6. ${x}  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">the value of plain var. was not changed --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#list </SPAN><SPAN style="COLOR: #ff0000">["loop"] as x</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    7. ${x}  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">now the loop var. hides the plain var. --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000">x </SPAN><SPAN style="COLOR: #0000ff">= "plain2"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">replace the plain var, hiding does not mater here --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    8. ${x}  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">it still hides the plain var. --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#list</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>9. ${x}  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">the new value of plain var. --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top> <BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#macro </SPAN><SPAN style="COLOR: #ff0000">test</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  2. ${x}  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">we still see the plain var. here --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#local </SPAN><SPAN style="COLOR: #ff0000">x </SPAN><SPAN style="COLOR: #0000ff">= "local"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  3. ${x}  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">now the local var. hides it --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#list </SPAN><SPAN style="COLOR: #ff0000">["loop"] as x</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    4. ${x}  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">now the loop var. hides the local var. --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#list</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  5. ${x}  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">now we see the local var. again --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#macro</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">  </SPAN></DIV></DIV> <P>l果Q?BR>1. plain<BR>  2. plain<BR>  3. local<BR>    4. loop<BR>  5. local<BR>6. plain<BR>    7. loop<BR>    8. loop<BR>9. plain2</P> <P>内部循环变量隐藏同名的外部@环变量,例如Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#list </SPAN><SPAN style="COLOR: #ff0000">["loop 1"] as x</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  ${x}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#list </SPAN><SPAN style="COLOR: #ff0000">["loop 2"] as x</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    ${x}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#list </SPAN><SPAN style="COLOR: #ff0000">["loop 3"] as x</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>      ${x}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#list</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    ${x}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#list</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  ${x}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#list</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV></DIV> <P>l果Q?BR>loop 1<BR>    loop 2<BR>      loop 3<BR>    loop 2<BR>  loop 1 </P> <P>模板中的变量会隐藏(而不是覆盖)数据模型中同名变量,如果需要访问数据模型中的同名变量,使用Ҏ变量globalQ下面的例子假设数据模型中的user的值是Big JoeQ?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000">user </SPAN><SPAN style="COLOR: #0000ff">= "Joe Hider"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${user}          </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">prints: Joe Hider --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${.globals.user} </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000">prints: Big Joe --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">  </SPAN></DIV></DIV> <P><STRONG>命名(namespaces)I间</STRONG>Q通常情况Q只使用一个命名空_UCؓd名空?main namespace)Q但你是不会意识到这些的Qؓ了创建可重用的macro、transforms或其它变量的集合(通常U库)Q必M用多命名I间Qؓ了防止同名冲H?/P> <P>首先创徏一个库(假设保存在lib/my_test.ftl?Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#macro </SPAN><SPAN style="COLOR: #ff0000">copyright date</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Copyright (C) ${date} Julia Smith. All rights reserved.<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">br</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Email: ${mail}</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#macro</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">  <BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000">mail </SPAN><SPAN style="COLOR: #0000ff">= "jsmith@acme.com"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> </SPAN></DIV></DIV> <P>使用import指o导入库到模板中,Freemarker会ؓ导入的库创徏新的命名I间Qƈ可以通过import指o中指定的hash(散列)变量讉K库中的变量:</P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#import </SPAN><SPAN style="COLOR: #ff0000">"/lib/my_test.ftl" as my</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000">mail</SPAN><SPAN style="COLOR: #0000ff">="fred@acme.com"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">@my</SPAN><SPAN style="COLOR: #ff0000">.copyright date</SPAN><SPAN style="COLOR: #0000ff">="1999-2002"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${my.mail}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${mail}  </SPAN></DIV></DIV> <P>l果Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Copyright (C) 1999-2002 Julia Smith. All rights reserved.<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">br</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Email: jsmith@acme.com</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>jsmith@acme.com<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>fred@acme.com  </SPAN></DIV></DIV> <P>上面的例子中使用的两个同名变量ƈ没有冲突Q因为它们位于不同的命名I间</P> <P>可以使用assign指o在导入的命名I间中创建或替代变量Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#import </SPAN><SPAN style="COLOR: #ff0000">"/lib/my_test.ftl" as my</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${my.mail}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000">mail</SPAN><SPAN style="COLOR: #0000ff">="jsmith@other.com"</SPAN><SPAN style="COLOR: #ff0000"> in my</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${my.mail}  </SPAN></DIV></DIV> <P>l果Q?BR><A href="mailto:jsmith@acme.com"><FONT color=#000000>jsmith@acme.com</FONT></A><BR><A href="mailto:jsmith@other.com"><FONT color=#000000>jsmith@other.com</FONT></A>  </P> <P>数据模型中的变量M地方都可见,也包括不同的命名I间Q下面修改了刚才创徏的库Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#macro </SPAN><SPAN style="COLOR: #ff0000">copyright date</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Copyright (C) ${date} ${user}. All rights reserved.</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#macro</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000">mail </SPAN><SPAN style="COLOR: #0000ff">= "${user}@acme.com"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">   </SPAN></DIV></DIV> <P>假设数据模型中的user变量的值是FredQ?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#import </SPAN><SPAN style="COLOR: #ff0000">"/lib/my_test.ftl" as my</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">@my</SPAN><SPAN style="COLOR: #ff0000">.copyright date</SPAN><SPAN style="COLOR: #0000ff">="1999-2002"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${my.mail}</SPAN></DIV></DIV> <P> l果Q?BR> <p>Copyright (C) 1999-2002 Fred. All rights reserved.</p><BR><A href="mailto:Fred@acme.com"><FONT color=#000000>Fred@acme.com</FONT></A>  <BR><BR><BR>参考:   <A blog - FreeMarker设计指南</A><BR>            <A >FreeMarker  in sourceforge.net</A></P><img src ="http://www.aygfsteel.com/pepsixp/aggbug/1941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pepsixp/" target="_blank">阿姆斯壮</a> 2005-03-11 11:08 <a href="http://www.aygfsteel.com/pepsixp/archive/2005/03/11/1941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习FreeMarkerQ一Q?/title><link>http://www.aygfsteel.com/pepsixp/archive/2005/03/11/1685.html</link><dc:creator>阿姆斯壮</dc:creator><author>阿姆斯壮</author><pubDate>Fri, 11 Mar 2005 03:00:00 GMT</pubDate><guid>http://www.aygfsteel.com/pepsixp/archive/2005/03/11/1685.html</guid><wfw:comment>http://www.aygfsteel.com/pepsixp/comments/1685.html</wfw:comment><comments>http://www.aygfsteel.com/pepsixp/archive/2005/03/11/1685.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.aygfsteel.com/pepsixp/comments/commentRss/1685.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/pepsixp/services/trackbacks/1685.html</trackback:ping><description><![CDATA[<P>FreeMarker是一个用Java~写的模板引擎,主要用来生成HTML Web面Q特别是ZMVC模式的应用程序。虽然FreeMarkerh一些编E的能力Q但不像PHPQ通常由JavaE序准备要显C的数据Q由FreeMarker模板生成面?nbsp; FreeMarker可以作ؓWeb应用框架一个组Ӟ但它与容器无养I在非Web应用E序环境也能工作的很好?FreeMarker适合作ؓMVC的视囄Ӟq能在模板中使用JSP标记库?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">html</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">head</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">title</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Welcome!</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">title</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">head</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">body</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">h1</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Welcome ${user}!</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">h1</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Our latest product:<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">a </SPAN><SPAN style="COLOR: #ff0000">href</SPAN><SPAN style="COLOR: #0000ff">="${latestProduct.url}"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">${latestProduct.name}</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">a</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">!<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">body</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">html</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">  <IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV> <P>上面的例子中Q在单的HTML中加入了一些由${…}包围的特定FreeMarker的指令,q个文gq为模板了。而user、latestProduct.url和latestProduct.name来自于数据模型,由JavaE序提供Q模板设计者就不用兛_数据从哪来的?/P> <P>FreeMarker模板中可以包括下面四U特定部分:<BR>一.) <STRONG>文本</STRONG>Q直接输?BR>?) <STRONG>FTL标记</STRONG>(FreeMarker模板语言标记)Q类gHTML标记Q名字前?(有些以@开始,用户自定义标?予以区分Q不会输出?BR><STRONG>字符?/STRONG>Q?使用单引h双引号限定;如果包含Ҏ字符需要{义符Q?{"It's \"quoted\" andthis is a backslash: \\"}<BR>有一cȝD的字符?${r"C:\foo\bar"}Q输出结构ؓQC:\foo\barQ在引号前面加r被认为是U文本?<BR>数字Q直接输入,不需要引受?{08}, ${+8}, ${8.00} and ${8} 都是相同?<BR><STRONG>布尔?/STRONG>Qtrue和falseQ不使用引号<BR><STRONG>Sequences(序列)</STRONG>Q由逗号分隔的变量列表,由方括号限定Q类似java中的一l数l:</P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#list </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#000000>["winter", "spring", "summer", "autumn"] as x</FONT></SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${x}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#list</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV> <P>输出l果Q?BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>winter<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>spring<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>summer<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>autumn<BR><BR>例二Q[2 + 2, [1, 2, 3, 4], "whatnot"]<BR>例三Q?..5Q等同于[2, 3, 4, 5]Q?..2Q等同于[5,4,3,2]。注意方括号是不需要的?BR><BR><STRONG>Hashes(散列)</STRONG>Q由逗号分隔的键-值列表,由大括号限定Q键和g间用冒号分隔Q{"name":"green mouse", "price":150}Q键和值都是表辑ּQ但是键必须是字W串?/P> <P><STRONG>获取变量</STRONG>Q?{variable}Q变量名只能是字母、数字、下划线?、@?的组合,且不能以数字开头。下列表辑ּ是等LQ?BR>book.author.name<BR>book["author"].name<BR>book.author.["name"]<BR>book["author"]["name"]<BR><BR>获取Sequence(序列)片断Q用[startindex..endindex]Q例如:seq中存储了"a", "b", "c", "d","e"Q那么seq[1..2]包含了b和c两个倹{?BR><BR>可以使用.variablename语法讉KFreeMarker内置变量?/P> <P><STRONG>字符串操?/STRONG><BR>{"Hello ${user}!"} <==> ${"Hello " + user + "!"}<BR>${"${user}${user}${user}${user}"} <==> ${user + user + user + user}</P> <P>${…}只能在文本中使用Q下面是错误的代码:<BR><#if ${isBig}>Wow!</#if> <BR><#if "${isBig}">Wow!</#if>  //此处的代码也是错误的Q因为if指o需要的是booleanQ实际的却是个字W串</P> <P>子字W串的操作,假设user的gؓ"Big Joe"Q?BR>${user[0]}${user[4]}  <==>  BJ<BR>${user[1..4]}  <==> ig J </P> <P><STRONG>Sequences(序列)操作</STRONG></P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#list </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#000000>["Joe", "Fred"] + ["Julia", "Kate"] as user</FONT></SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>- ${user}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#list</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></DIV> <P>l果Q?BR>- Joe<BR>- Fred<BR>- Julia<BR>- Kate</P> <P><STRONG>Hashes(散列)操作</STRONG></P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><STRONG><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></STRONG><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#000000>ages</FONT> </SPAN><SPAN style="COLOR: #0000ff">= <FONT color=#000000>{"Joe":23, </FONT></SPAN><SPAN style="COLOR: #ff0000"><FONT color=#000000>"Fred":25} + {"Joe":30, "Julia":18}</FONT></SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>- Joe is ${ages.Joe}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>- Fred is ${ages.Fred}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>- Julia is ${ages.Julia}  </SPAN></DIV></DIV> <P>l果Q?BR>- Joe is 30<BR>- Fred is 25<BR>- Julia is 18  </P> <P><STRONG>术q算</STRONG></P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><STRONG><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></STRONG><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#000000>x的D定ؓ5</FONT> --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${x * x - 100}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${x / 2}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${12 % 10}</SPAN></DIV></DIV> <P>l果Q?BR>-75<BR>2.5<BR>2 <BR><BR>注意Q?操作W两边必L数字Q?+"Ӟ如果一Ҏ数字Q一Ҏ字符Ԍ׃自动数字{换ؓ字符丌Ӏ?BR><BR>使用内徏的指令int<STRONG>获得整数部分</STRONG>Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV>${(x/2)?int}<BR>${1.1?int}<BR>${1.999?int}<BR>${-1.1?int}<BR>${-1.999?int}</DIV></DIV> <P>l果Q?BR>2<BR>1<BR>1<BR>-1<BR>-1</P> <P><STRONG>比较操作W?/STRONG>Q?lt;#if expression>...</#if><BR>1.)使用=Q或==Q完全相{)试两个值是否相{,使用!= 试两个值是否不相等<BR>2.)=?=两边必须是相同类型的|否则会生错误,例如<#if 1 = "1">会引起错?BR>3.)Freemarker是精比较,所?x"?x  "?X"是不相等?BR>4.)Ҏ字和日期可以使用<?lt;=?gt;?gt;=Q但不能用于字符?BR>5.)׃Freemarker会将>解释成FTL标记的结束字W,所以对?gt;?gt;=可以使用括号来避免这U情况,例如<#if (x > y)>Q另一U替代的Ҏ是,使用lt、lte、gt和gte来替?lt;?lt;=?gt;?gt;=</P> <P><STRONG>逻辑操作W?/STRONG>Q?amp;&(and)、||(or)?(not)Q只能用于布|否则会生错?BR><#if x < 12 && color = "green"><BR>  We have less than 12 things, and they are green.<BR></#if><BR><#if !hot> <#-- here hot must be a boolean --><BR>  It's not hot.<BR></#if>  </P> <P><STRONG>内置函数</STRONG>Q用法类D问hash(散列)的子变量Q只是??"替代"."Q例如:user?upper_case<BR>下面列出常用的一些函敎ͼ<BR><U>对于字符?/U><BR>htmlQ对字符串进行HTML~码<BR>cap_firstQ字符串第一个字母大?BR>lower_caseQ将字符串{换成写<BR>trimQ去掉字W串前后的空白字W?BR><U>对于Sequences(序列)<BR></U>sizeQ获得序列中元素的数?BR><U>对于数字<BR></U>intQ取得数字的整数部分Q如-1.9?int的结果是-1Q?BR><BR>例一Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#000000>test的gؓTom & Jerry</FONT> --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${test?html}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${test?upper_case?html}</SPAN></DIV></DIV> <P>l果Q?BR>Tom &amp; Jerry<BR>TOM &amp; JERRY <BR><BR>例二Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#000000>seasons的gؓ"winter", "spring", "summer", "autumn"</FONT> --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${seasons?size}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${seasons[1]?cap_first} </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#000000>left side can by any expression</FONT> --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${"horse"?cap_first}  </SPAN></DIV></DIV> <P>l果Q?BR>4<BR>Spring<BR>Horse  </P> <P><STRONG>Ҏ的调?/STRONG><BR>${repeat("What", 3)} <BR>${repeat(repeat("x", 2), 3) + repeat("What", 4)?upper_case} <BR>l果Q?BR>WhatWhatWhat<BR>xxxxxxWHATWHATWHATWHAT </P> <P><STRONG>操作W优先顺?/STRONG><BR>后缀            [subvarName] [subStringRange] . (methodParams)<BR>一?nbsp;           +expr?expr?<BR>内徏            ?<BR>乘法            *?/ ?<BR>加法            +?<BR>关系            <?gt;?lt;=?gt;=Qlt、lte、gt、gteQ?BR>相等            =?=<BR>逻辑            &&<BR>逻辑            ||<BR>数字范围      ..</P> <P>?) <STRONG>Interpolation</STRONG>Q由${...}?{...}两种cdQ输|可以定义输出的格?BR>例一Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#setting </SPAN><SPAN style="COLOR: #ff0000">number_format</SPAN><SPAN style="COLOR: #0000ff">="currency"</SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000">answer</SPAN><SPAN style="COLOR: #0000ff">=42/><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #ff0000"><FONT color=#000000>${answer}<BR></FONT><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><FONT color=#000000>${answer?string}</FONT>  <FONT color=#000000><#-- the same as ${answer} --</FONT></SPAN><SPAN style="COLOR: #0000ff"><FONT color=#000000>></FONT></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${answer?string.number}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${answer?string.currency}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${answer?string.percent} </SPAN></DIV></DIV> <P>l果Q?BR>$42.00<BR>$42.00<BR>42<BR>$42.00<BR>4,200%</P> <P>例二Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">${lastUpdated?string("yyyy-MM-dd HH:mm:ss zzzz")}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${lastUpdated?string("EEE, MMM d, ''yy")}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>${lastUpdated?string("EEEE, MMMM dd, yyyy, hh:mm:ss a '('zzz')'")}  </SPAN></DIV></DIV> <P>l果Q?BR>2003-04-08 21:24:44 Pacific Daylight Time<BR>Tue, Apr 8, '03<BR>Tuesday, April 08, 2003, 09:24:44 PM (PDT)</P> <P>例三Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#assign </SPAN><SPAN style="COLOR: #ff0000">foo</SPAN><SPAN style="COLOR: #0000ff">=true/><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #ff0000"><FONT color=#000000>${foo?string("yes", "no")}</FONT></SPAN></DIV></DIV> <P>l果Q?BR>yes</P> <P>例四Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#000000>x is 2.582 and y is 4</FONT> --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>#{x; M2}   </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#--<FONT color=#0000ff> </FONT></SPAN><SPAN style="COLOR: #ff0000"><FONT color=#0000ff>2.58</FONT> --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>#{y; M2}   </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#0000ff>4 </FONT>   --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>#{x; m1}   </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#0000ff>2.6</FONT> --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>#{y; m1}   </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#0000ff>4.0</FONT> --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>#{x; m1M2} </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#0000ff>2.58</FONT> --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>#{y; m1M2} </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#-- </SPAN><SPAN style="COLOR: #ff0000"><FONT color=#0000ff>4.0</FONT>  --</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">  </SPAN></DIV></DIV> <P>说明QmXQ小数部分最X位;MXQ小数部分最大X位?/P> <P>?) <STRONG>注释</STRONG>Q?lt;#--?-> </P> <P>下面是一个常用的模板例子Q?/P> <DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"> <DIV><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">p</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">We have these animals:<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">table </SPAN><SPAN style="COLOR: #ff0000">border</SPAN><SPAN style="COLOR: #0000ff">=1><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #ff0000"><tr</SPAN><SPAN style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">th</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Name</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">th</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">Price<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#list </SPAN><SPAN style="COLOR: #ff0000">animals as being</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">tr</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#if </SPAN><SPAN style="COLOR: #ff0000">being.size </SPAN><SPAN style="COLOR: #0000ff">= "large"</SPAN><SPAN style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">b</SPAN><SPAN style="COLOR: #0000ff">></</SPAN><SPAN style="COLOR: #800000">#if</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>      ${being.name}<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#if </SPAN><SPAN style="COLOR: #ff0000">being.size</SPAN><SPAN style="COLOR: #0000ff">="large"</SPAN><SPAN style="COLOR: #0000ff">></</SPAN><SPAN style="COLOR: #800000">b</SPAN><SPAN style="COLOR: #0000ff">></</SPAN><SPAN style="COLOR: #800000">#if</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">td</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">${being.price} Euros<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">#list</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top> </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">table</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> <BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">#include </SPAN><SPAN style="COLOR: #ff0000">"/copyright_footer.html"</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV></DIV> <P><STRONG>注意?/STRONG>Q?BR>1.) FreeMarker是区分大写的;<BR>2.) FTL标记不能位于另一个FTL标记内部Q例如:<#if <#include 'foo'>='bar'>...</if>Q?BR>3.) ${…}只能在文本中使用Q?BR>4.) 多余的空白字W会在模板输出时去除Q?BR>5.) 如果使用的指令不存在Q会产生一个错误消息?/P> <P><BR>参考:    <A blog - FreeMarker设计指南</A><BR>              <A >FreeMarker  in sourceforge.net</A></P><img src ="http://www.aygfsteel.com/pepsixp/aggbug/1685.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/pepsixp/" target="_blank">阿姆斯壮</a> 2005-03-11 11:00 <a href="http://www.aygfsteel.com/pepsixp/archive/2005/03/11/1685.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">³</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̩</a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">׼</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank">ͩ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">׿</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">ͼ</a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">פ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>