1 28 29 package com.caucho.jstl.rt; 30 31 import com.caucho.jstl.NameValueTag; 32 import com.caucho.util.L10N; 33 34 import javax.servlet.jsp.JspException ; 35 import javax.servlet.jsp.tagext.BodyTagSupport ; 36 import javax.servlet.jsp.tagext.Tag ; 37 38 41 public class CoreParamTag extends BodyTagSupport { 42 private static L10N L = new L10N(CoreParamTag.class); 43 44 private String _name; 45 private String _value; 46 47 52 public void setName(String name) 53 { 54 _name = name; 55 } 56 57 62 public void setValue(String value) 63 { 64 _value = value; 65 } 66 67 70 public int doStartTag() 71 throws JspException 72 { 73 if (_name == null) 74 return SKIP_BODY; 75 76 if (_value == null) 77 return EVAL_BODY_BUFFERED; 78 79 Tag parent = getParent(); 80 for (; parent != null; parent = parent.getParent()) { 81 if (parent instanceof NameValueTag) { 82 NameValueTag tag = (NameValueTag) parent; 83 84 if (_value == null) 85 tag.addParam(_name, ""); 86 else 87 tag.addParam(_name, _value); 88 89 return SKIP_BODY; 90 } 91 } 92 93 throw new JspException (L.l("c:param requires c:url or c:import parent.")); 94 } 95 96 99 public int doEndTag() 100 throws JspException 101 { 102 if (_value != null) 103 return EVAL_PAGE; 104 105 String value; 106 107 if (bodyContent != null) 108 value = bodyContent.getString().trim(); 109 else 110 value = ""; 111 112 Object parent = getParent(); 113 if (! (parent instanceof NameValueTag)) 114 throw new JspException (L.l("c:param requires c:url or c:import parent.")); 115 116 NameValueTag tag = (NameValueTag) parent; 117 118 tag.addParam(_name, value); 119 120 return EVAL_PAGE; 121 } 122 } 123 | Popular Tags |