1 28 29 package com.caucho.jstl.el; 30 31 import com.caucho.jsp.PageContextImpl; 32 import com.caucho.util.L10N; 33 import com.caucho.xpath.Env; 34 import com.caucho.xpath.XPath; 35 import com.caucho.xpath.XPathException; 36 37 import org.w3c.dom.Node ; 38 39 import javax.servlet.jsp.JspException ; 40 import javax.servlet.jsp.tagext.TagSupport ; 41 42 45 public class XmlIfTag extends TagSupport { 46 private static L10N L = new L10N(XmlIfTag.class); 47 48 private com.caucho.xpath.Expr _select; 49 50 private String _var; 51 private String _scope; 52 53 56 public void setSelect(com.caucho.xpath.Expr select) 57 { 58 _select = select; 59 } 60 61 64 public void setVar(String var) 65 { 66 _var = var; 67 } 68 69 72 public void setScope(String scope) 73 { 74 _scope = scope; 75 } 76 77 80 public int doStartTag() 81 throws JspException 82 { 83 try { 84 boolean test = evalBoolean((PageContextImpl) pageContext, _select); 85 86 Boolean value = test ? Boolean.TRUE : Boolean.FALSE; 87 88 if (_var == null) { 89 } 90 else 91 CoreSetTag.setValue(pageContext, _var, _scope, value); 92 93 return test ? EVAL_BODY_INCLUDE : SKIP_BODY; 94 } catch (Exception e) { 95 throw new JspException (e); 96 } 97 } 98 99 102 public static boolean evalBoolean(PageContextImpl pageContext, 103 com.caucho.xpath.Expr select) 104 throws XPathException 105 { 106 Env env = XPath.createEnv(); 107 env.setVarEnv(((PageContextImpl) pageContext).getVarEnv()); 108 109 Node node = pageContext.getNodeEnv(); 110 111 boolean test = select.evalBoolean(node, env); 112 113 env.free(); 114 115 return test; 116 } 117 } 118 | Popular Tags |