<#list List/Map/Array[] as Object> Freemarker


<div class="index_buluolist clearfix">
<ul>
<input type="hidden" name="userid" value="${userid}">
//循环取出ls_buluo(list)中的对象给t_list <#list ls_buluo as t_list>
<li class="clearfix"><a
href="/topic/?id=${t_list.rid}&time=${t_list.time}">
<div class="index_buluolist2 clearfix">
<div class="index_buluolist2t">
<h3>${t_list.titles}</h3>
<span class="time">${t_list.bbs_date}</span>
</div>
<div class="index_buluolist2b">
<p>${t_list.bbs_title}</p>
</div>
</div>
<div class="index_buluolist1 clearfix">
<img src="${t_list.pic_small}"> <i class="hot">热点</i>
</div>
</a>
<div id="guanzhu_${t_list.rid}">
${t_list.gz_str}
<!--<a href="javascript:void(0);" onClick="dothing(${t_list.rid},${t_list.ctype},'buluo',9);"><span class="guanzhus">+ 关注</span></a>-->
</div></li> </#list>
</ul>

</div>


在模版页里用list展示列表内容,非常方便。全部用例子来说吧。


最常用的用法 :
<#list users as user>
      <span>${user.name}</span>
      <span>${user.age}</span></br>
</#list>
这里,是假设java类里有一个users的数组,或者Map,或者List等等,它的里面放的是user类,每个user有自己name,age属性。
最后显示的结果就是users里面所有user的姓名和年龄。


上例中的users处也可以是用现场定义的,如
<#list [1,2,3,4] as index>
     <span>${index}</span>
</#list>
结果显示是:1234


如果只是想要计数,也可以这样写
<#list 1..4 as index>
   <span>${index}</span>
</#list>
结果和上面是一样的,也是1234


如果需要显示当前循环到第几项,可以这样写
<#list ["hello","welcome","hi"] as word>
    <span>${word_index+1},${word}</span></br>
</#list>
as 后面的那个变量,加上_index,就可以表示当前循环到第几项
结果是:
1,hello
2,welcome
3,hi
有时候,最后一项在显示的时候可能要做特殊处理,怎么判断最后一项?
<#list ["hello","welcome","hi"] as word>
    <span>${word}</span><#if word_has_next>,</#if></#list>
as 后面的那个变量,加上_has_next,就可以判断是否最后一项
结果是:
hello,welcome,hi


如果想在循环中判断到某一项时退出,可以这样做
<#list users as user>
   <span>${user.name}</span>

FreeMarker template error: The following has evaluated to null or missing: ==> info.errorStatistics.stackTraceAndMessage[trace] [in template "mission.ftl" at line 239, column 48] Tip: If the failing expression is known to be legally null/missing, either specify a default value with myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthessis: (myOptionVar.foo)!myDefault, (myOptionVar.foo)?? The failing instruction (FTL stack trace): ---------- ==> ${info.errorStatistics.stackTraceAndM... [in template "mission.ftl" at line 239, column 46] #list info.errorStatistics.stackTrace... [in template "mission.ftl" at line 232, column 9] #if showErrorStatistics [in template "mission.ftl" at line 223, column 5] ---------- Java stack trace (for programmers): ---------- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:98) at freemarker.core.EvalUtil.coerceModelToString(EvalUtil.java:382) at freemarker.core.Expression.evalAndCoerceToString(Expression.java:115) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.MixedContent.accept(MixedContent.java:93) at freemarker.core.Environment.visitByHiddingParent(Environment.java:286) at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:86) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.MixedContent.accept(MixedContent.java:93) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:181) at freemarker.core.Environment.visitIteratorBlock(Environment.java:509) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:103) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.MixedContent.accept(MixedContent.java:93) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.IfBlock.accept(IfBlock.java:84) at freemarker.core.Environment.visitByHiddingParent(Environment.java:286) at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:86) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.MixedContent.accept(MixedContent.java:93) at freemarker.core.Environment.visit(Environment.java:265) at freemarker.core.Environment.process(Environment.java:243) at freemarker.template.Template.process(Template.java:277) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:366) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:283) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:233) at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:167) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1047) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:817) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
最新发布
10-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值