1 package com.jcorporate.expresso.services.taglib; 2 3 66 67 import org.apache.log4j.Logger; 68 69 import javax.servlet.http.HttpServletRequest ; 70 import javax.servlet.http.HttpServletResponse ; 71 import javax.servlet.jsp.JspException ; 72 import javax.servlet.jsp.JspWriter ; 73 import javax.servlet.jsp.tagext.TagSupport ; 74 import java.io.IOException ; 75 76 77 94 public class FormActionTag extends TagSupport { 95 96 private static final Logger log = Logger.getLogger(FormActionTag.class); 97 98 101 private String value; 102 103 106 private String defaultValue; 107 108 111 public FormActionTag() { 112 } 113 114 119 public String getValue() { 120 return value; 121 } 122 123 128 public void setValue(String value) { 129 this.value = value; 130 } 131 132 138 public int doEndTag() throws javax.servlet.jsp.JspException { 139 if (log.isDebugEnabled()) { 140 log.debug("Evaluating Action Tag: value=" + this.getValue() 141 + " default=" + this.getDefault()); 142 } 143 144 ELTagSupport support = ELTagSupport.getInstance(); 145 Exception ex = null; 146 boolean tryDefault = false; 147 String result = ""; 148 try { 149 result = (String ) support.evaluate("value", this.getValue(), 150 String .class, 151 this, this.pageContext); 152 153 if (result == null || result.length() == 0) { 154 tryDefault = true; 155 } 156 } catch (ClassCastException ex1) { 157 log.error("ClassCastException evaluating parameter 'value'", ex1); 158 throw new JspException ("Received wrong type back for parameter 'value'. Expected java.lang.String"); 159 } catch (JspException ex1) { 160 log.info("Failed to resolve value: " + this.getValue(), ex1); 161 ex = ex1; 162 tryDefault = true; 163 } 164 165 String defaultEval = this.getDefault(); 166 if (tryDefault && defaultEval != null && defaultEval.length() > 0) { 167 result = (String ) support.evaluate("default", getDefault(), 168 String .class, 169 this, this.pageContext); 170 171 if (result == null || result.length() == 0) { 172 log.info("Failed to resolve default: " + this.getDefault()); 173 throw new JspException ("Unable to evaluate value or default. 'default'=" + this.getDefault()); 174 } 175 } else { 176 if (tryDefault) { 177 throw new JspException ("Unable to evaluate 'value' = " + this.getValue() 178 + " and no default value supplied"); 179 } 180 } 181 182 String writeValue = ((HttpServletRequest ) this.pageContext.getRequest()).getContextPath() + result; 183 writeValue = ((HttpServletResponse ) this.pageContext.getResponse()).encodeURL(writeValue); 184 JspWriter out = pageContext.getOut(); 185 try { 186 out.write(writeValue); 187 } catch (IOException ex2) { 188 log.warn("Error writing : " + writeValue, ex2); 189 throw new JspException ("I/O error"); 190 } 191 192 return TagSupport.EVAL_PAGE; 193 } 194 195 200 public String getDefault() { 201 return defaultValue; 202 } 203 204 209 public void setDefault(String newValue) { 210 defaultValue = newValue; 211 } 212 213 214 } | Popular Tags |