1 /* 2 * $Id: ELParamTag.java 482911 2006-12-06 05:44:33Z 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.strutsel.taglib.html; 22 23 import org.apache.struts.taglib.html.ParamTag; 24 import org.apache.strutsel.taglib.utils.EvalHelper; 25 26 import javax.servlet.jsp.JspException; 27 28 /** 29 * Adds a new request parameter to its parent {@link ELLinkTag}. This subclass 30 * allows all attribute values to be specified as expressions utilizing the 31 * JavaServer Pages Standard Library expression language. 32 * 33 * @version $Rev: 482911 $ $Date: 2006-12-05 23:44:33 -0600 (Tue, 05 Dec 2006) $ 34 * @since Struts 1.3.6 35 */ 36 public class ELParamTag extends ParamTag { 37 38 /** 39 * Instance variable mapped to "name" tag attribute. (Mapping set in 40 * associated BeanInfo class.) 41 */ 42 private String nameExpr; 43 44 /** 45 * Instance variable mapped to "value" tag attribute. (Mapping set in 46 * associated BeanInfo class.) 47 */ 48 private String valueExpr; 49 50 /** 51 * Getter method for "name" tag attribute. (Mapping set in associated 52 * BeanInfo class.) 53 */ 54 public String getNameExpr() { 55 return (nameExpr); 56 } 57 58 /** 59 * Getter method for "value" tag attribute. (Mapping set in associated 60 * BeanInfo class.) 61 */ 62 public String getValueExpr() { 63 return (valueExpr); 64 } 65 66 /** 67 * Setter method for "name" tag attribute. (Mapping set in associated 68 * BeanInfo class.) 69 */ 70 public void setNameExpr(String nameExpr) { 71 this.nameExpr = nameExpr; 72 } 73 74 /** 75 * Setter method for "value" tag attribute. (Mapping set in associated 76 * BeanInfo class.) 77 */ 78 public void setValueExpr(String valueExpr) { 79 this.valueExpr = valueExpr; 80 } 81 82 /** 83 * Resets attribute values for tag reuse. 84 */ 85 public void release() { 86 super.release(); 87 setNameExpr(null); 88 setValueExpr(null); 89 } 90 91 /** 92 * Process the start tag. 93 * 94 * @throws JspException if a JSP exception has occurred 95 */ 96 public int doStartTag() throws JspException { 97 evaluateExpressions(); 98 99 return (super.doStartTag()); 100 } 101 102 /** 103 * Processes all attribute values which use the JSTL expression evaluation 104 * engine to determine their values. 105 * 106 * @throws JspException if a JSP exception has occurred 107 */ 108 private void evaluateExpressions() throws JspException { 109 String string = null; 110 111 if ((string = EvalHelper.evalString("name", getNameExpr(), this, 112 pageContext)) != null) { 113 setName(string); 114 } 115 116 if ((string = EvalHelper.evalString("value", getValueExpr(), this, 117 pageContext)) != null) { 118 setValue(string); 119 } 120 } 121 }