View Javadoc

1   /*
2    * $Id: ParamTag.java 482912 2006-12-06 05:48:32Z pbenedict $
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  import javax.servlet.jsp.tagext.BodyTagSupport;
27  import javax.servlet.jsp.tagext.Tag;
28  
29  /**
30   * Adds a new request parameter to its parent {@link LinkTag}.
31   *
32   * @version $Rev: 482912 $ $Date: 2006-12-05 23:48:32 -0600 (Tue, 05 Dec 2006) $
33   * @since Struts 1.3.6
34   */
35  public class ParamTag extends BodyTagSupport {
36  
37      /**
38       * The message resources for this package.
39       */
40      protected static MessageResources messages =
41          MessageResources.getMessageResources(Constants.Package
42              + ".LocalStrings");
43  
44      /**
45       * The name of the query parameter.
46       */
47      protected String name = null;
48  
49      /**
50       * The value of the query parameter or body content of this tag (if any).
51       */
52      protected String value = null;
53  
54      // ----------------------------------------------------- Constructor
55  
56      public ParamTag() {
57          super();
58      }
59  
60      public String getName() {
61          return (this.name);
62      }
63  
64      public void setName(String name) {
65          this.name = name;
66      }
67  
68      public String getValue() {
69          return (this.value);
70      }
71  
72      public void setValue(String value) {
73          this.value = value;
74      }
75  
76      // --------------------------------------------------------- Public Methods
77  
78      /**
79       * @throws JspException if a JSP exception has occurred
80       */
81      public int doStartTag() throws JspException {
82          return (EVAL_BODY_TAG);
83      }
84  
85      /**
86       * Save the associated from the body content.
87       *
88       * @throws JspException if a JSP exception has occurred
89       */
90      public int doAfterBody() throws JspException {
91          if (this.bodyContent != null) {
92              String value = this.bodyContent.getString().trim();
93              if (value.length() > 0) {
94                  this.value = value;
95              }
96          }
97          return (SKIP_BODY);
98      }
99  
100     /**
101      * Render the end of the hyperlink.
102      *
103      * @throws JspException if a JSP exception has occurred
104      */
105     public int doEndTag() throws JspException {
106         Tag tag = findAncestorWithClass(this, LinkTag.class);
107         if (tag != null) {
108             ((LinkTag)tag).addParameter(this.name, this.value);
109         } else {
110             throw new JspException(messages.getMessage("linkParamTag.linkParam"));
111         }
112         return (EVAL_PAGE);
113     }
114 
115     /**
116      * Release any acquired resources.
117      */
118     public void release() {
119         super.release();
120         this.name = null;
121         this.value = null;
122     }
123 }