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

Java编程

开发平台:

Java

  1. package bible.jsp.tags;
  2. import java.io.*;
  3. import java.util.*;
  4. import javax.servlet.jsp.*;
  5. import javax.servlet.jsp.tagext.*;
  6. /**
  7.  * Title:        SelectOption
  8.  * Description:  Tag extension to set selected option(s) in a select list
  9.  * Copyright:    Copyright (c) 2001
  10.  * Company:      ZeeWare Inc.
  11.  * @author Gary Wells
  12.  * @version 1.0
  13.  */
  14. public class SelectOption extends BodyTagSupport {
  15.   /** Array of values to be selected */
  16.   String[] values;
  17.   /**
  18.    * Returns an array of selected values.
  19.    * @return    the array of selected values.
  20.    */
  21.   public String[] getValue() {
  22.     return values;
  23.   }
  24.   /**
  25.    * Sets the array of selected values to the array parameter.
  26.    * @param     newArrayValues  the desired array of selected values.
  27.    */
  28.   public void setValue(String[] newArrayValues) {
  29.     values = newArrayValues;
  30.   }
  31.   /**
  32.    * Creates an array of selected values from the single value parameter.
  33.    * @param     newValue  the desired array of selected values.
  34.    */
  35.   public void setValue(String newValue) {
  36.     if (newValue != null) {
  37.       values = new String[1];
  38.       values[0] = newValue;
  39.     }
  40.   }
  41.   /**
  42.    * Creates an array of selected values from the single value parameter.
  43.    * @return    the desired character.
  44.    * @exception JspTagException
  45.    *              if an error occurs while writing to the JSP writer.
  46.    * @see       javax.servlet.jsp.JspWriter#write()
  47.    */
  48.   public int doEndTag() throws JspTagException {
  49.     // get body content
  50.     String bodyString = bodyContent.getString();
  51.     if(values != null && values.length > 0) {
  52.       // make a string array of option tags
  53.       StringTokenizer bodyTokens = new StringTokenizer(bodyString,"n");
  54.       ArrayList optionsList = new ArrayList();
  55.       while (bodyTokens.hasMoreTokens()) {
  56.         optionsList.add(bodyTokens.nextToken());
  57.       }
  58.       String[] optionsArray = new String[optionsList.size()];
  59.       optionsArray = (String[])optionsList.toArray(optionsArray);
  60.       // declare work fields
  61.       String optionBeforeValue;
  62.       String optionAfterValue;
  63.       String optionValue;
  64.       String opt;
  65.       StringBuffer optionsOut = new StringBuffer();
  66.       boolean found = false;
  67.       // parse through the array looking for selected values
  68.       for (int i = 0; i < optionsArray.length; i++) {
  69.         opt = optionsArray[i];
  70.         if (opt.trim().length() > 0) {
  71.           // before option value
  72.           optionBeforeValue = opt.substring(0,opt.indexOf("value="));
  73.           //option value
  74.           optionValue = opt.substring(opt.indexOf("value=")+6,opt.indexOf(">"));
  75.           if (optionValue.startsWith("""))
  76.             optionValue = optionValue.substring(1,optionValue.length());
  77.           if (optionValue.endsWith("""))
  78.             optionValue = optionValue.substring(0,optionValue.length()-1);
  79.           // after option value
  80.           optionAfterValue = opt.substring(opt.indexOf("value="),opt.length());
  81.           // if a selected value is found, add to the buffer with "SELECTED"
  82.           found = false;
  83.           for (int j = 0; j < values.length ; j++) {
  84.             if (optionValue.equals(values[j])) {
  85.               found = true;
  86.               optionsOut.append(optionBeforeValue + "SELECTED " + optionAfterValue + "n");
  87.             }
  88.           }
  89.           // if not found, add to the buffer as is
  90.           if (found == false) {
  91.             optionsOut.append(opt + "n");
  92.           }
  93.         }
  94.       }
  95.       // write the buffer
  96.       try {
  97.         pageContext.getOut().write(optionsOut.toString());
  98.       } catch (IOException ex) {
  99.         throw new JspTagException("Fatal IO error");
  100.       }
  101.     // no values, write the body content as is
  102.     } else {
  103.       try {
  104.         pageContext.getOut().write(bodyString);
  105.       } catch (IOException ex) {
  106.         throw new JspTagException("Fatal IO error");
  107.       }
  108.     }
  109.     return EVAL_PAGE;
  110.   }
  111. }