001: /*
002: * $Id: ELBaseTag.java 471754 2006-11-06 14:55:09Z husted $
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.strutsel.taglib.html;
022:
023: import org.apache.struts.taglib.html.BaseTag;
024: import org.apache.strutsel.taglib.utils.EvalHelper;
025:
026: import javax.servlet.jsp.JspException;
027:
028: /**
029: * Renders an HTML <base> element with an href attribute pointing to the
030: * absolute location of the enclosing JSP page. This tag is only valid when
031: * nested inside a head tag body. The presence of this tag allows the browser
032: * to resolve relative URL's to images, CSS stylesheets and other resources
033: * in a manner independent of the URL used to call the ActionServlet. <p> This
034: * class is a subclass of the class <code>org.apache.struts.taglib.html.BaseTag</code>
035: * which provides most of the described functionality. This subclass allows
036: * all attribute values to be specified as expressions utilizing the
037: * JavaServer Pages Standard Library expression language.
038: *
039: * @version $Rev: 471754 $
040: */
041: public class ELBaseTag extends BaseTag {
042: /**
043: * Instance variable mapped to "target" tag attribute. (Mapping set in
044: * associated BeanInfo class.)
045: */
046: private String targetExpr;
047:
048: /**
049: * Instance variable mapped to "server" tag attribute. (Mapping set in
050: * associated BeanInfo class.)
051: */
052: private String serverExpr;
053:
054: /**
055: * Instance variable mapped to "ref" tag attribute. (Mapping set in
056: * associated BeanInfo class.)
057: */
058: private String refExpr;
059:
060: /**
061: * Getter method for "target" tag attribute. (Mapping set in associated
062: * BeanInfo class.)
063: */
064: public String getTargetExpr() {
065: return (targetExpr);
066: }
067:
068: /**
069: * Getter method for "server" tag attribute. (Mapping set in associated
070: * BeanInfo class.)
071: */
072: public String getServerExpr() {
073: return (serverExpr);
074: }
075:
076: /**
077: * Getter method for "ref" tag attribute. (Mapping set in associated
078: * BeanInfo class.)
079: */
080: public String getRefExpr() {
081: return (refExpr);
082: }
083:
084: /**
085: * Setter method for "target" tag attribute. (Mapping set in associated
086: * BeanInfo class.)
087: */
088: public void setTargetExpr(String targetExpr) {
089: this .targetExpr = targetExpr;
090: }
091:
092: /**
093: * Setter method for "server" tag attribute. (Mapping set in associated
094: * BeanInfo class.)
095: */
096: public void setServerExpr(String serverExpr) {
097: this .serverExpr = serverExpr;
098: }
099:
100: /**
101: * Setter method for "ref" tag attribute. (Mapping set in associated
102: * BeanInfo class.)
103: */
104: public void setRefExpr(String refExpr) {
105: this .refExpr = refExpr;
106: }
107:
108: /**
109: * Resets attribute values for tag reuse.
110: */
111: public void release() {
112: super .release();
113: setTargetExpr(null);
114: setServerExpr(null);
115: setRefExpr(null);
116: }
117:
118: /**
119: * Process the start tag.
120: *
121: * @throws JspException if a JSP exception has occurred
122: */
123: public int doStartTag() throws JspException {
124: evaluateExpressions();
125:
126: return (super .doStartTag());
127: }
128:
129: /**
130: * Processes all attribute values which use the JSTL expression evaluation
131: * engine to determine their values.
132: *
133: * @throws JspException if a JSP exception has occurred
134: */
135: private void evaluateExpressions() throws JspException {
136: String string = null;
137:
138: if ((string = EvalHelper.evalString("target", getTargetExpr(),
139: this , pageContext)) != null) {
140: setTarget(string);
141: }
142:
143: if ((string = EvalHelper.evalString("server", getServerExpr(),
144: this , pageContext)) != null) {
145: setServer(string);
146: }
147:
148: if ((string = EvalHelper.evalString("ref", getRefExpr(), this,
149: pageContext)) != null) {
150: setRef(string);
151: }
152: }
153: }
|