程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 用JSP創建一個表格模板

用JSP創建一個表格模板

編輯:關於JSP

 項目中要用到一些展示信息的表格,表頭不固定,表格內容是即時從後台取的;考慮到復用性,筆者用jsp編寫了一個表格模板,可以從   request中獲取List封裝的數據,然後通過JSTL結合EL表達式填充到模板。最後完成的jsp文件可以作為一個單獨的模塊,嵌入到任意其它jsp頁   面需要的位置。           首先是規劃一下表格的樣式:         為簡單起見,此處使用html的table等標簽構建了一個簡單的表格,表格背景隔行變色,整體顏色為藍色系。表格定義部分的核心代碼   如下: [html]   <table style="width:100%;border:1px white solid">       <tr bgcolor="#4F81BD"style="color: #fff;">           <th style="text-align: center"><%=columns[0]%></th>           <th style="text-align: center"><%=columns[1]%></th>       </tr>       <c:forEach items="${list}" var="row"varStatus="status">           <tr bgcolor="${status.index%2 == 0?'#D0D8E8':'#E9EDF4'}">               <td align="center">${status.current.key}</td>               <td align="center">${row.value}</td>           </tr>       </c:forEach>   </table>                  此表格只有兩列,可用於顯示包含一組“鍵值對”的數據。代碼中的columns是jsp頁面中定義的一個java字符串數組,保存兩列   列頭的值,例如:“設備類型”、“數量”。數據行使用JSTL的forEach標簽來遍歷各條數據,其中list變量是存放在request中的List類型的   對象,List中存放了一組包含“鍵值對”的數據實體,筆者所用的數據實體是一個簡單的Bean: [java]   package com.reports.charts.bean;       public classKeyValueBean {       private String key;       private String value;             public KeyValueBean() {       }       public KeyValueBean(String key, String value) {           this.key = key;           this.value = value;       }             public String getKey() {           return key;       }       public void setKey(String key) {           this.key = key;       }       public String getValue() {           return value;       }       public void setValue(String value){           this.value = value;       }   }                模板中的取值方法用到了EL表達式,例如${list}表示取出request中的list對象。${status.current}和${row}其實指代的是同   一個東西,也就是當前遍歷的數據行,這裡使用兩種不同的寫法是為了給讀者提供更多實現方式的參考。關於EL表達式的詳細信息,可參考筆   者轉發的文章《JSP中的EL表達式詳細介紹》。         接下來的關鍵就是傳遞list的值放到request中了。一般J2EE項目中都使用了Struts、SpringMVC等mvc框架,常見的處理流程應該是客   戶端發送數據請求,Controller接收請求進行處理,取出並生成合適的數據存放到一個List中,然後轉發給View,也就是轉發給JSP頁面來顯示   。         然而基於其它的考慮,筆者希望這個jsp頁面可以不經過Controller而獨立運行,於是就需要將控制層移到jsp代碼中;完整的jsp模板   定義代碼如下:           其中,SpringContextHolder是筆者定義的一個獲取Spring管理的其它Bean的工具類,用這個類可以方便地在同一個項目所有運行Java   代碼的地方使用,詳見筆者的:《在JavaWeb應用中獲取Spring管理的Bean的方法》。ReportFunctions類是一個業務類,包含了許多具體業務   的代碼,除了本文的jsp模板中可以使用之外,在項目的其它許多控制類都會用到。或者換句話說,筆者此處是借用了項目中現有的一個業務類   ,抽象出了一個模板。我們將模板保存一下,例如保存為“_tb2ColParam.jsp”,然後帶著參數訪問或獲取這個jsp即可呈現出一個帶樣式的表   格:“_tb2ColParam.jsp?p=1024&columns=types|nums”。 [plain]   <%@ page language="java"contentType="text/html; charset=UTF-8"       pageEncoding="UTF-8"%>   <%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c" %>       <%@ page import="com.reports.util.ReportFunctions"%>   <%@ page import="com.reports.util.SpringContextHolder"%>   <%@ page import="java.util.*"%>   <%@ page import="com.reports.charts.bean.KeyValueBean"%>       <%       String[]columns = null;       try{           columns= request.getParameter("columns").split("\\|");       }catch(NullPointerExceptione){           e.printStackTrace();           System.out.println("參數columns未賦值");       }       if(null == columns){           columns= newString[]{"設備種類","數量"};       }       Stringparam = request.getParameter("p");             ReportFunctionsreportF = SpringContextHolder.getBean(ReportFunctions.class);       List<KeyValueBean>list = null;       if(null != param){           list= report.method(param);       }else{           System.out.println(“參數獲取失敗”);       }             if(0 == list.size()){           list.add(new KeyValueBean("暫未統計", "暫無數據"));       }       request.setAttribute("list", list);   %>       <table style="width:100%;border:1px white solid">       <tr bgcolor="#4F81BD"style="color: #fff;">           <th style="text-align: center"><%=columns[0]%></th>           <th style="text-align: center"><%=columns[1]%></th>       </tr>       <c:forEach items="${list}" var="row"varStatus="status">           <tr bgcolor="${status.index%2 == 0?'#D0D8E8':'#E9EDF4'}">               <td align="center">${status.current.key}</td>               <td align="center">${row.value}</td>           </tr>       </c:forEach>   </table>    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved