table.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:2k
源码类别:

Java编程

开发平台:

Java

  1. package tag;
  2. import java.util.*;
  3. import javax.servlet.jsp.*;
  4. import javax.servlet.jsp.tagext.*;
  5. import java.io.*;
  6. public class table extends TagSupport {
  7. private Iterator iterator;
  8. private String items;
  9. private String var;
  10. //设置表头
  11. private String header;
  12. private StringBuffer sbTable=new StringBuffer("");
  13. private int numCols=0;
  14. private int ctr=0;
  15. private JspWriter out;
  16. public void setItems(String items) {
  17. this.items = items;
  18. }
  19. public void setHeader(String header){
  20.     this.header=header;
  21. }
  22. public void setVar(String var) {
  23. this.var = var;
  24. }
  25. public int doStartTag( ) throws JspTagException {
  26.     out=pageContext.getOut();
  27.     //render the table header with column names
  28.     sbTable.append("<table border='1' cellspacing='1' cellpadding='0' bgcolor='#DDDDDD' width='100%'><tr>");
  29.     String[] colNames=(String[])pageContext.findAttribute(header);
  30.     if (colNames == null) {
  31.       throw new JspTagException("没有读取到表头设置信息");
  32.     }
  33.     numCols=colNames.length;
  34.     for(int i=0;i<numCols;i++){
  35.       sbTable.append("<td>"+colNames[i]+"</td>");
  36.     }
  37.     sbTable.append("</tr><tr>");
  38.     //get table data
  39.     Collection coll = (Collection) pageContext.findAttribute(items);
  40.     if (coll == null) {
  41.       try {
  42.         out.println("没有相关数据内容");
  43.       }
  44.       catch (IOException ex) {
  45.       }
  46.        return SKIP_BODY;
  47.     }
  48.     iterator = coll.iterator();
  49.     if (iterator.hasNext( )) {
  50. //  pageContext.setAttribute(var, iterator);
  51.   return EVAL_BODY_INCLUDE;
  52.   }
  53.   else {
  54.   return SKIP_BODY;
  55.   }
  56.   }
  57.   public int doAfterBody( ) {
  58.   if (iterator.hasNext( )) {
  59.   ctr++;
  60. //  pageContext.setAttribute(var, iterator.next( ));
  61.   //need start a new row
  62.   // QQQ what if numCols ==1
  63.   sbTable.append("<td>"+(String)iterator.next()+"</td>");
  64.   if((ctr%numCols)==0){
  65.   System.out.println(ctr+"--"+numCols);
  66.   sbTable.append("</tr><tr>");
  67.   }
  68.   return EVAL_BODY_AGAIN;
  69.   }
  70.   else {
  71.   //finish render table data
  72.   sbTable.append("</tr></table>");
  73. //  System.out.println(sbTable);
  74.   try {
  75.     out.print(sbTable);
  76.   }
  77.   catch (IOException ex) {
  78.   }
  79.   return SKIP_BODY;
  80.   }
  81.   }
  82. }