KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > mlw > vlh > web > tag > DefaultSelectTag


1 /**
2  * Copyright (c) 2003 held jointly by the individual authors.
3  *
4  * This library is free software; you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License as published
6  * by the Free Software Foundation; either version 2.1 of the License, or
7  * (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; with out even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with this library; if not, write to the Free Software Foundation,
16  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
17  *
18  * > http://www.gnu.org/copyleft/lesser.html
19  * > http://www.opensource.org/licenses/lgpl-license.php
20  */

21 package net.mlw.vlh.web.tag;
22
23 import java.util.Arrays JavaDoc;
24 import java.util.Collections JavaDoc;
25 import java.util.Iterator JavaDoc;
26 import java.util.List JavaDoc;
27
28 import javax.servlet.jsp.JspException JavaDoc;
29 import javax.servlet.jsp.tagext.BodyTagSupport JavaDoc;
30
31 import net.mlw.vlh.ValueList;
32 import net.mlw.vlh.web.util.JspUtils;
33
34 import org.apache.commons.beanutils.BeanUtils;
35 import org.apache.commons.logging.Log;
36 import org.apache.commons.logging.LogFactory;
37
38 /**
39  * Generate a select box from a ValueList <br>
40  *
41  * @author Matthew L. Wilson
42  * @version $Revision: 1.8 $ $Date: 2005/11/23 15:02:16 $
43  */

44 public class DefaultSelectTag extends BodyTagSupport JavaDoc
45 {
46
47    private static final Log LOGGER = LogFactory.getLog(DefaultSelectTag.class);
48
49    private String JavaDoc name;
50
51    private String JavaDoc attributes;
52
53    private String JavaDoc value;
54
55    private String JavaDoc text;
56
57    /**
58     * @see javax.servlet.jsp.tagext.TagSupport#doEndTag()
59     */

60    public int doEndTag() throws JspException JavaDoc
61    {
62       ValueListSpaceTag rootTag = (ValueListSpaceTag) JspUtils.getParent(this, ValueListSpaceTag.class);
63
64       ValueList valueList = rootTag.getValueList();
65
66       StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
67
68       sb.append("<select name=").append("'").append(name).append("'").append(attributes).append(">");
69
70       if (bodyContent != null && bodyContent.getString() != null)
71       {
72          sb.append(bodyContent.getString());
73       }
74
75       try
76       {
77          String JavaDoc[] svalues = pageContext.getRequest().getParameterValues(name);
78          List JavaDoc values = (svalues == null) ? Collections.EMPTY_LIST : Arrays.asList(svalues);
79
80          for (Iterator JavaDoc iter = valueList.getList().iterator(); iter.hasNext();)
81          {
82             Object JavaDoc bean = iter.next();
83             String JavaDoc value = BeanUtils.getProperty(bean, this.value);
84
85             sb.append("<option ");
86             if (values.contains(value))
87             {
88                sb.append("selected='true' ");
89             }
90             sb.append("value='").append(value).append("'>");
91             sb.append(BeanUtils.getProperty(bean, text));
92             sb.append("</option>");
93          }
94       }
95       catch (Exception JavaDoc e)
96       {
97          LOGGER.error("DefaultSelectTag.doEndTag() exception...", e);
98          throw new JspException JavaDoc(e);
99       }
100       sb.append("</select>");
101
102       JspUtils.write(pageContext, sb.toString());
103
104       release();
105
106       return EVAL_PAGE;
107    }
108
109    /**
110     * @return Returns the attributes.
111     */

112    public String JavaDoc getAttributes()
113    {
114       return attributes;
115    }
116
117    /**
118     * @param attributes
119     * The attributes to set.
120     */

121    public void setAttributes(String JavaDoc attributes)
122    {
123       this.attributes = attributes;
124    }
125
126    /**
127     * @return Returns the name.
128     */

129    public String JavaDoc getName()
130    {
131       return name;
132    }
133
134    /**
135     * @param name
136     * The name to set.
137     */

138    public void setName(String JavaDoc name)
139    {
140       this.name = name;
141    }
142
143    /**
144     * @return Returns the text.
145     */

146    public String JavaDoc getText()
147    {
148       return text;
149    }
150
151    /**
152     * @param text
153     * The text to set.
154     */

155    public void setText(String JavaDoc text)
156    {
157       this.text = text;
158    }
159
160    /**
161     * @return Returns the value.
162     */

163    public String JavaDoc getValue()
164    {
165       return value;
166    }
167
168    /**
169     * @param value
170     * The value to set.
171     */

172    public void setValue(String JavaDoc value)
173    {
174       this.value = value;
175    }
176
177    private void reset()
178    {
179       this.attributes = null;
180       this.name = null;
181       this.text = null;
182       this.value = null;
183    }
184
185    /**
186     * Called on a Tag handler to release state.
187     * The page compiler guarantees that JSP page implementation
188     * objects will invoke this method on all tag handlers,
189     * but there may be multiple invocations on doStartTag and doEndTag in between.
190     *
191     * @see javax.servlet.jsp.tagext.Tag#release()
192     */

193    public void release()
194    {
195       super.release();
196       reset();
197    }
198 }
Popular Tags