1. 程式人生 > >Freemarker list物件取前幾條資料

Freemarker list物件取前幾條資料

專案中用freemarker 做顯示層,可能會遇到取出資料前幾條,通過用freemarker 取資料用<#list root.list as row> ${row.title} <#/list> ,但是這種取法是取出所有的資料.

如果我想去第一條資料:

<#list arrayList as c>

    <#if c_index == 0>
      第一項的值
    </#if>

</#list>

現在只想取前5條,該怎麼做?程式碼如下:

<#assign n = list5?size /> //定義n的值為list5的大小
<#if n gt 6> //如果n大於6,頁面中可能要求只顯示6條           (注:gt,gte,lt,lte)


<#assign n = 6 /> //把n重定義為6
< /#if>


< #if n!=0> //防止n的值為0,也可以寫成<#if n gt 0 >
< #list 0..(n-1) as i> //把前 n 條 記錄賦值給 i,如果i=3,則[0,1,2]
< #assign ls5 = list5[i] /> //把list5的第i個元素賦值給ls5
< #assign isNew = list5Istrue[i] />
< tr>
< td height='25' class='z3'>.<a href='#' onclick="zw('${ls5.CIid}','905','活動展示','');">
< #if ls5.CTitle?length lt 15> //如果Ctitle的長度小於15,就
${ls5.CTitle} //就正常顯示該標題
<#else> //如果大於15
${ls5.CTitle[0..15]}... //就擷取前15個,並加上…
</#if>
< #if isNew="true">
< img src='/model/img/new-111.gif' width='27' height='11' border='0' />
< /#if>
< /a></td>
< /tr>
< /#list>
< /#if>

專案中應用:

[#assign n = 0] 
[#list cocoPersonInfo.cocoPersonResues as v] 
[#assign n = n + 1] 
    <tr >
      <td width="66" colspan="2" >${v.worktime_begin}</td>
      <td width="66" colspan="2" >${v.worktime_end}</td>
      <td width="300" colspan="10" >${v.workplace}</td>
      <td width="168" colspan="4" >${v.occupation}</td>
    </tr>
[#if n > 4] 
[#break] 
[/#if] 
[/#list] 
[#if n < 5] 
[#list n..4 as i]
    <tr >
      <td width="66" colspan="2" ></td>
      <td width="66" colspan="2" ></td>
      <td width="300" colspan="10" ></td>
      <td width="168" colspan="4" ></td>
    </tr>
[/#list] 
[/#if]

效果:

 

相關推薦

Freemarker list物件資料

專案中用freemarker 做顯示層,可能會遇到取出資料前幾條,通過用freemarker 取資料用<#list root.list as row> ${row.title} <#/list> ,但是這種取法是取出所有的資料. 如果我想去第一條資料

JAVA List根據字段排序以及數據

字段排序 .so ret sort etime com sub clas tar 1.經常會遇到對組裝的list排序或提取list中前幾條數據,例如: 根據時間排序: 1 list.sort((o1, o2) -> o2.getCreateTime().compar

sql之分組組內資料

一、對分組的記錄取前N條記錄:例如:取每組的前3條最大的記錄 1.用子查詢: SELECT * FROM tableName a  WHERE (SELECT COUNT(*) FROM tableName b WHERE b.id=a.id AND b.cnt>

java中list4資料

if (list.size() > 5) {//判斷list長度             List newList = list.subList(0, 4);//取前四條資料             return newList;//返回新的list         }

今天遇到一個問題,mysql分組資料

親測無誤 小提示: 建立臨時表的方式需要資料庫寫許可權,只有讀許可權的話還是用老實用巢狀sql好了 DROP TEMPORARY TABLE IF EXISTS tableWithRowNum; CREATE TEMPORARY TABLE t

mysql或者oracle分組排序數據

esc rom group over nbsp oracle oracl 排序 _id mysql: select a.* from(select t1.*,(select count(*)+1 from 表 where 分組字段=t1.分組字段 and 排序字段<t

查詢資料分組之後的資料 可根據不同情況篩選

需求 : 1)獲取每個企業新發布的4個產品 2)VIP企業獲取8個產品 簡單的demo 這是所有的資料 SELECT product_name, company_id, add_time, vip, rn FROM

SQL查詢資料的方法

sql在不同資料庫查詢前幾條資料1. ORACLE SELECT * FROM TABLE1 WHERE ROWNUM<=N HQL: from table1 t order by t.createTime desc where rownum<=n2. IN

sql 查詢 資料

sql在不同資料庫查詢前幾條資料 1. ORACLE   SELECT * FROM TABLE1 WHERE ROWNUM<=N   HQL: from table1 t order by t.createTime desc where rownum<=n 2

es java 聚合方法——聚合後根據count排序並2資料

聚合後根據count排序並取前2條資料 /** * 聚合後根據count排序並取前2條資料 */ @Test public void orderAfterAggregation(){ SearchResp

hive分組去資料

需求交易系統,財務要求維護每個使用者首個交易完成的訂單資料(首單表,可取每個使用者交易完成時間最老的訂單資料)。舉例:簡寫版的表結構:表資料:則 財務希望彙總記錄如下:uidorder_idservice_completion_time2442017-02-03 12:23:

資料庫查詢資料

1. ORACLE   SELECT * FROM TABLE1 WHERE ROWNUM<=N   HQL: from table1 t order by t.createTime desc where rownum<=n 2. SQL SERVER

sql分組(orderBy、GroupBy)獲取每組一()資料

sql資料庫實現分組並取每組的前1(幾)條資料 測試資料準備工作: 根據某一個欄位分組取最大(小)值所在行的資料: 建立表並且插入資料 CREATE table Test_orderByOrGroupBy_tb(Name nvarchar(50),Val int,Describe n

mysql分組每組記錄(排名) 附group by與order by的研究

select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name--方法2:select a.* from tb a where not exists(select 1 from tb 

mysql帶條件的字串拼接,多行資料合併一行顯示,

我原來通過group by 進行分組然後利用GROUP_CONCAT GROUP_CONCAT(s3.name) 獲取到了一串人名 現在要判斷如果裡面的人多餘三個就只顯示三個人其他用...號顯

mysql分組每組記錄

1、表SQL: DROP TABLE IF EXISTS `ho_archives`; CREATE TABLE `ho_archives` (   `id` mediumint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',

parttion by ~~~針對某個欄位或多個欄位重複,資料n。問題例子:1.主評論下的評論按著 時間正序最多隻5 2.獲取最新登入記錄......

分組目前已知partition by、group by partition by用於給結果集分組分割槽,如果沒有指定那麼它把整個結果集作為一個分組,最後顯示具體資料 group by:通過所查詢的資料的某一欄位或屬性進行分組,最後顯示組資料,而不是具體資料,因為select 後面的所有列中,沒有使用聚合函

Oracle資料庫rank()over(partition by order by)實現分組 排序 資料

Oracle1.使用 rank()over(order by)得到記錄排序根據工資排名,排名相同的時候下一個排名累加,比如第三和第四工資一樣,那麼第三第四排名都是3,第五排名是5而非4dense_rank()實現的效果不累加,第五仍是4例:select code 編號,sal

sql server 分組,每組的資料

sql中group by後,獲取每組中的前N行資料,目前我知道的有2種方法 比如有個成績表: 裡面有欄位學生ID,科目,成績。我現在想取每個科目的頭三名。  1.   子查詢 select * from score s where StudentName in (selec

SQL查詢已經排序好的資料中的

使用 select top 5 * from table order by id 時,報用select語句檢索oracle資料庫時出現ora-00923:未找到要求的from關鍵字。 因為該SQL語句是在SQLServer中的使用的,如果是在 Oracle中,需要使用 ro