JSP自定义标签的例子(KAPOK中的代码)

来源:互联网 发布:淘宝助理描述源码 编辑:程序博客网 时间:2024/04/30 14:52

一。OperationJavaScriptTag

package com.kapok.web.tag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
/**
 * <p>Title: 红棉俱乐部 信息化网络平台</p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */

public class OperationJavaScriptTag extends TagSupport {
    public String checkboxIdName;
    public String checkboxRequestIdName;
    public String allIdNames;
    public String allRequestIdNames;
    public String formName;
    public String doEditURL;
    public String doQueryURL; //
    public OperationJavaScriptTag() {
        super();
    }

    public int doStartTag() throws JspException {
      return (SKIP_BODY);
    }

    public int doEndTag() throws JspException {
      String[] idNames;
      String[] requestIdNames;
      if(allIdNames==null){
          idNames=new String[1];
          idNames[0]=checkboxIdName;
      }else{
          idNames=allIdNames.split(",");
      }
      if(allRequestIdNames==null){
          requestIdNames=new String[1];
          requestIdNames[0]=checkboxRequestIdName;
      }else{
          requestIdNames=allRequestIdNames.split(",");
      }
      JspWriter writer = pageContext.getOut();
      try {
          writer.println(" <script language=/"JavaScript/"> ");
          writer.println(" form=document['"+formName+"']; ");
          writer.println(" function selectAll(){ ");
          writer.println(" var e; ");
          writer.println("  if(form['"+checkboxIdName+"']==undefined){ ");
          writer.println("  return ;");
          writer.println("  } ");
          writer.println("  if(form['"+checkboxIdName+"'].length==undefined){ ");
          for(int i=0;i<idNames.length;i++){
              writer.println(" e=form['"+idNames[i]+"']; ");
              if(idNames[i].equals(checkboxIdName)){
                  writer.println(" e.checked = form.selectall.checked; ");
              }else{
                  writer.println(" e.disabled=!form.selectall.checked; ");
              }
          }
          writer.println(" }else{ ");
          writer.println(" for (var i=0;i<form['"+checkboxIdName+"'].length;i++){ ");
          for(int i=0;i<idNames.length;i++){
              writer.println(" e=form['"+idNames[i]+"'](i); ");
              if(idNames[i].equals(checkboxIdName)){
                  writer.println(" e.checked = form.selectall.checked; ");
              }else{
                  writer.println(" e.disabled=!form.selectall.checked; ");
              }
          }
          writer.println(" } ");
          writer.println(" } ");
          writer.println(" } ");

          writer.println(" function countChecked(){ ");
          writer.println(" num=0; ");
          writer.println("  if(form['"+checkboxIdName+"']==undefined){ ");
          writer.println("  return 0;");
          writer.println(" } ");
          writer.println("  if(form['"+checkboxIdName+"'].length==undefined){ ");
          writer.println("      if(form['"+checkboxIdName+"'].checked==true){ ");
          writer.println("    return 1;");
          writer.println("   }else{ ");
          writer.println("  return 0;");
          writer.println("  } ");
          writer.println("  } ");
          writer.println(" for (var i=0;i<form['"+checkboxIdName+"'].length;i++){  ");
          writer.println(" var e = form['"+checkboxIdName+"'](i); ");
          writer.println(" if(e.checked == true){ ");
          writer.println("  num++;");
          writer.println(" } ");
          writer.println(" } ");
          writer.println(" return num; ");
          writer.println(" } ");

          writer.println(" function doRemove(){ ");
          writer.println(" if(countChecked()==0){ ");
          writer.println("  alert(/"请选中要删除的信息!/"); ");
          writer.println("  return false; ");
          writer.println(" } ");
          writer.println("  if(confirm(/"你将永久删除所选信息。//n你确定要删除吗?/")){ ");
          writer.println("  form.submit(); ");
          writer.println("  return true; ");
          writer.println(" } ");
          writer.println(" } ");

          writer.println(" function doEdit(){ ");
          writer.println("  num=countChecked(); ");
          writer.println("  if(num<1){");
          writer.println("  alert(/"请选中要修改的信息!/");");
          writer.println("  return false;");
          writer.println("  }");
          writer.println("  if(num>1){");
          writer.println("  alert(/"一次只能修改一条记录!/");");
          writer.println("  return false;");
          writer.println("  }");
          writer.println("  if(form['"+checkboxIdName+"'].length==undefined){ ");
          writer.println("  str='"+doEditURL+"?'");
          for(int i=0;i<idNames.length;i++){
             if(i==0){
                 writer.println("  str+='" + requestIdNames[i] + "='+form['" +
                                idNames[i] + "'].value");
             }else{
                 writer.println("  str+='&" + requestIdNames[i] + "='+form['" +
                                idNames[i] + "'].value");
             }
          }
          writer.println("  }else{");
          writer.println("  for (var i=0;i<form['"+checkboxIdName+"'].length;i++){");
          writer.println("  var e = form['"+checkboxIdName+"'](i);");
          writer.println("  if(e.checked == true){");
          writer.println("  str='"+doEditURL+"?'");
          for(int i=0;i<idNames.length;i++){
              if(i==0){
                  writer.println("  str+='" + requestIdNames[i] + "='+form['" +
                                 idNames[i] + "'](i).value");
              }else{
                  writer.println("  str+='&" + requestIdNames[i] + "='+form['" +
                                 idNames[i] + "'](i).value");
              }
          }
          writer.println(" } ");
          writer.println(" } ");
          writer.println(" } ");
          writer.println(" window.location.href=str; ");
          writer.println(" } ");

          writer.println(" function doQuery(){ ");
          writer.println("  str='"+doQueryURL+"'");
          writer.println(" form.action=str; ");
          writer.println(" form.submit(); ");
          writer.println(" } ");

          writer.println(" function selectOne(e){ ");
          writer.println("  form.selectall.checked=false; ");
          writer.println("  if(form['"+checkboxIdName+"'].length==undefined){ ");
          for(int i=0;i<idNames.length;i++){
              if(!idNames[i].equals(checkboxIdName)){
                  writer.println("  form['" + idNames[i] +"'].disabled=!e.checked;");
              }
          }
          writer.println("  }else{");
          writer.println("  for (var i=0;i<form['"+checkboxIdName+"'].length;i++){");
          writer.println("  var a = form['"+checkboxIdName+"'](i);");
          writer.println("  if (a == e){");
          for(int i=0;i<idNames.length;i++){
              if(!idNames[i].equals(checkboxIdName)){
                  writer.println("  form['" + idNames[i] +
                                 "'](i).disabled=!e.checked;");
              }
          }
          writer.println(" } ");
          writer.println(" } ");
          writer.println(" } ");
          writer.println(" } ");
          writer.println(" </script> ");
      }
      catch (IOException ex) {
      }
      return (SKIP_BODY);
  }

    public String getCheckboxIdName() {
        return checkboxIdName;
    }

    public String getDoEditURL() {
        return doEditURL;
    }

    public String getDoQueryURL() {
        return doQueryURL;
    }


    public String getFormName() {
        return formName;
    }

    public String getAllIdNames() {
        return allIdNames;
    }

    public String getAllRequestIdNames() {
        return allRequestIdNames;
    }

    public String getCheckboxRequestIdName() {
        return checkboxRequestIdName;
    }

    public void setCheckboxIdName(String checkboxIdName) {
        this.checkboxIdName = checkboxIdName;
    }

    public void setDoEditURL(String doEditURL) {
        this.doEditURL = doEditURL;
    }

    public void setDoQueryURL(String doQueryURL) {
        this.doQueryURL = doQueryURL;
    }


    public void setFormName(String formName) {
        this.formName = formName;
    }

    public void setAllIdNames(String allIdNames) {
        this.allIdNames = allIdNames;
    }

    public void setAllRequestIdNames(String allRequestIdNames) {
        this.allRequestIdNames = allRequestIdNames;
    }

    public void setCheckboxRequestIdName(String checkboxRequestIdName) {
        this.checkboxRequestIdName = checkboxRequestIdName;
    }
}

二。kapok.tld

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
  "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>

<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>Application Tag Library</shortname>
<uri>http://192.168.0.8:8083/bbscs6/</uri>
<info>
   This tag library contains functionality specific to the Struts
    Example Application.
</info>

  <tag>
    <name>QueryConditionTag</name>
    <tagclass>com.kapok.web.tag.QueryConditionTag</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
      queryConditionTag
    </info>
    <attribute>
      <name>type</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>QueryConditionDisplayTag</name>
    <tagclass>com.kapok.web.tag.QueryConditionDisplayTag</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
      queryConditionDisplayTag
    </info>
    <attribute>
      <name>type</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>rows</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>cols</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>QueryOrderTag</name>
    <tagclass>com.kapok.web.tag.QueryOrderTag</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
      QueryOrderTag
    </info>
    <attribute>
      <name>orderFieldNo</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>QueryAffirmTag</name>
    <tagclass>com.kapok.web.tag.QueryAffirmTag</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
      QueryAffirmTag
    </info>
  </tag>
  <tag>
    <name>QueryObjectTag</name>
    <tagclass>com.kapok.web.tag.QueryObjectTag</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
      QueryObjectTag
    </info>
    <attribute>
      <name>name</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>QueryPageInfoTag</name>
    <tagclass>com.kapok.web.tag.QueryPageInfoTag</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
      QueryPageInfoTag
    </info>
    <attribute>
      <name>name</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>QueryPaginationTag</name>
    <tagclass>com.kapok.web.tag.QueryPaginationTag</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
      QueryPaginationTag
    </info>
    <attribute>
      <name>name</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>formName</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>queryURL</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
  <tag>
    <name>OperationJavaScriptTag</name>
    <tagclass>com.kapok.web.tag.OperationJavaScriptTag</tagclass>
    <bodycontent>empty</bodycontent>
    <info>
      OperationJavaScriptTag
    </info>
    <attribute>
      <name>checkboxIdName</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>checkboxRequestIdName</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>allIdNames</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>allRequestIdNames</name>
      <required>false</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>formName</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>doEditURL</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
      <name>doQueryURL</name>
      <required>true</required>
      <rtexprvalue>true</rtexprvalue>
    </attribute>
  </tag>
</taglib>

原创粉丝点击