1 /*
2 * $Id: BaseInputTag.java 684382 2008-08-10 00:11:59Z niallp $
3 *
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21 package org.apache.struts.taglib.html;
22
23 import org.apache.struts.util.MessageResources;
24
25 import javax.servlet.jsp.JspException;
26
27 /**
28 * Abstract base class for the various input tags.
29 *
30 * @version $Rev: 684382 $ $Date: 2004-10-16 12:38:42 -0400 (Sat, 16 Oct 2004)
31 * $
32 */
33 public abstract class BaseInputTag extends BaseHandlerTag {
34 /**
35 * The message resources for this package.
36 */
37 protected static MessageResources messages =
38 MessageResources.getMessageResources(Constants.Package
39 + ".LocalStrings");
40
41 // ----------------------------------------------------- Instance Variables
42
43 /**
44 * Autocomplete non standard attribute
45 */
46 private String autocomplete = null;
47
48 /**
49 * The number of character columns for this field, or negative for no
50 * limit.
51 */
52 protected String cols = null;
53
54 /**
55 * The maximum number of characters allowed, or negative for no limit.
56 */
57 protected String maxlength = null;
58
59 /**
60 * The name of the field (and associated property) being processed.
61 */
62 protected String property = null;
63
64 /**
65 * The number of rows for this field, or negative for no limit.
66 */
67 protected String rows = null;
68
69 /**
70 * The value for this field, or <code>null</code> to retrieve the
71 * corresponding property from our associated bean.
72 */
73 protected String value = null;
74
75 /**
76 * The name of the bean containing our underlying property.
77 */
78 protected String name = Constants.BEAN_KEY;
79
80 // ------------------------------------------------------------- Properties
81
82 /**
83 * Return autocomplete
84 * @since 1.3.10
85 */
86 public String getAutocomplete() {
87 return autocomplete;
88 }
89
90 /**
91 * Activate/disactivate autocompletion (on/off)
92 * @since 1.3.10
93 */
94 public void setAutocomplete(String autocomplete) {
95 this.autocomplete = autocomplete;
96 }
97
98 public String getName() {
99 return (this.name);
100 }
101
102 public void setName(String name) {
103 this.name = name;
104 }
105
106 /**
107 * Return the number of columns for this field.
108 */
109 public String getCols() {
110 return (this.cols);
111 }
112
113 /**
114 * Set the number of columns for this field.
115 *
116 * @param cols The new number of columns
117 */
118 public void setCols(String cols) {
119 this.cols = cols;
120 }
121
122 /**
123 * Return the maximum length allowed.
124 */
125 public String getMaxlength() {
126 return (this.maxlength);
127 }
128
129 /**
130 * Set the maximum length allowed.
131 *
132 * @param maxlength The new maximum length
133 */
134 public void setMaxlength(String maxlength) {
135 this.maxlength = maxlength;
136 }
137
138 /**
139 * Return the property name.
140 */
141 public String getProperty() {
142 return (this.property);
143 }
144
145 /**
146 * Set the property name.
147 *
148 * @param property The new property name
149 */
150 public void setProperty(String property) {
151 this.property = property;
152 }
153
154 /**
155 * Return the number of rows for this field.
156 */
157 public String getRows() {
158 return (this.rows);
159 }
160
161 /**
162 * Set the number of rows for this field.
163 *
164 * @param rows The new number of rows
165 */
166 public void setRows(String rows) {
167 this.rows = rows;
168 }
169
170 /**
171 * Return the size of this field (synonym for <code>getCols()</code>).
172 */
173 public String getSize() {
174 return (getCols());
175 }
176
177 /**
178 * Set the size of this field (synonym for <code>setCols()</code>).
179 *
180 * @param size The new size
181 */
182 public void setSize(String size) {
183 setCols(size);
184 }
185
186 /**
187 * Return the field value (if any).
188 */
189 public String getValue() {
190 return (this.value);
191 }
192
193 /**
194 * Set the field value (if any).
195 *
196 * @param value The new field value, or <code>null</code> to retrieve the
197 * corresponding property from the bean
198 */
199 public void setValue(String value) {
200 this.value = value;
201 }
202
203 // --------------------------------------------------------- Public Methods
204
205 /**
206 * Process the start of this tag. The default implementation does
207 * nothing.
208 *
209 * @throws JspException if a JSP exception has occurred
210 */
211 public int doStartTag() throws JspException {
212 return (EVAL_BODY_TAG);
213 }
214
215 /**
216 * Process the end of this tag. The default implementation does nothing.
217 *
218 * @throws JspException if a JSP exception has occurred
219 */
220 public int doEndTag() throws JspException {
221 return (EVAL_PAGE);
222 }
223
224 /**
225 * Prepare the name element
226 *
227 * @return The element name.
228 */
229 protected String prepareName()
230 throws JspException {
231 if (property == null) {
232 return null;
233 }
234
235 // * @since Struts 1.1
236 if (indexed) {
237 StringBuffer results = new StringBuffer();
238
239 prepareIndex(results, name);
240 results.append(property);
241
242 return results.toString();
243 }
244
245 return property;
246 }
247
248 /**
249 * Release any acquired resources.
250 */
251 public void release() {
252 super.release();
253 autocomplete = null;
254 name = Constants.BEAN_KEY;
255 cols = null;
256 maxlength = null;
257 property = null;
258 rows = null;
259 value = null;
260 }
261 }