001: /*
002: * $Id: ParamTag.java 482912 2006-12-06 05:48:32Z pbenedict $
003: *
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021: package org.apache.struts.taglib.html;
022:
023: import org.apache.struts.util.MessageResources;
024:
025: import javax.servlet.jsp.JspException;
026: import javax.servlet.jsp.tagext.BodyTagSupport;
027: import javax.servlet.jsp.tagext.Tag;
028:
029: /**
030: * Adds a new request parameter to its parent {@link LinkTag}.
031: *
032: * @version $Rev: 482912 $ $Date: 2006-12-05 23:48:32 -0600 (Tue, 05 Dec 2006) $
033: * @since Struts 1.3.6
034: */
035: public class ParamTag extends BodyTagSupport {
036:
037: /**
038: * The message resources for this package.
039: */
040: protected static MessageResources messages = MessageResources
041: .getMessageResources(Constants.Package + ".LocalStrings");
042:
043: /**
044: * The name of the query parameter.
045: */
046: protected String name = null;
047:
048: /**
049: * The value of the query parameter or body content of this tag (if any).
050: */
051: protected String value = null;
052:
053: // ----------------------------------------------------- Constructor
054:
055: public ParamTag() {
056: super ();
057: }
058:
059: public String getName() {
060: return (this .name);
061: }
062:
063: public void setName(String name) {
064: this .name = name;
065: }
066:
067: public String getValue() {
068: return (this .value);
069: }
070:
071: public void setValue(String value) {
072: this .value = value;
073: }
074:
075: // --------------------------------------------------------- Public Methods
076:
077: /**
078: * @throws JspException if a JSP exception has occurred
079: */
080: public int doStartTag() throws JspException {
081: return (EVAL_BODY_TAG);
082: }
083:
084: /**
085: * Save the associated from the body content.
086: *
087: * @throws JspException if a JSP exception has occurred
088: */
089: public int doAfterBody() throws JspException {
090: if (this .bodyContent != null) {
091: String value = this .bodyContent.getString().trim();
092: if (value.length() > 0) {
093: this .value = value;
094: }
095: }
096: return (SKIP_BODY);
097: }
098:
099: /**
100: * Render the end of the hyperlink.
101: *
102: * @throws JspException if a JSP exception has occurred
103: */
104: public int doEndTag() throws JspException {
105: Tag tag = findAncestorWithClass(this , LinkTag.class);
106: if (tag != null) {
107: ((LinkTag) tag).addParameter(this .name, this .value);
108: } else {
109: throw new JspException(messages
110: .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: }
|