1 28 29 package com.caucho.jsp.java; 30 31 import com.caucho.jsp.JspParseException; 32 import com.caucho.vfs.WriteStream; 33 import com.caucho.xml.QName; 34 35 import java.io.IOException ; 36 37 public class JstlXmlIf extends JstlNode { 38 private static final QName SELECT = new QName("select"); 39 private static final QName VAR = new QName("var"); 40 private static final QName SCOPE = new QName("scope"); 41 42 private String _select; 43 private String _var; 44 private String _scope; 45 46 49 public void addAttribute(QName name, String value) 50 throws JspParseException 51 { 52 if (SELECT.equals(name)) 53 _select = value; 54 else if (VAR.equals(name)) 55 _var = value; 56 else if (SCOPE.equals(name)) 57 _scope = value; 58 else 59 throw error(L.l("`{0}' is an unknown attribute for <{1}>.", 60 name.getName(), getTagName())); 61 } 62 63 66 public void addAttribute(QName name, JspAttribute value) 67 throws JspParseException 68 { 69 if (false) 70 throw error(L.l("`{0}' is an unsupported jsp:attribute for <{1}>.", 71 name.getName(), getTagName())); 72 } 73 74 79 public void printXml(WriteStream os) 80 throws IOException 81 { 82 os.print("<x:if"); 83 84 if (_select != null) { 85 os.print(" select=\""); 86 printXmlText(os, _select); 87 os.print("\""); 88 } 89 90 if (_var != null) 91 os.print(" var=\"" + _var + "\""); 92 93 if (_scope != null) 94 os.print(" scope=\"" + _scope + "\""); 95 96 os.print(">"); 97 98 printXmlChildren(os); 99 100 os.print("</x:if>"); 101 } 102 103 106 public void generate(JspJavaWriter out) 107 throws Exception 108 { 109 if (_select == null) 110 throw error(L.l("required attribute `select' missing from <{0}>", 111 getTagName())); 112 113 String select = ("com.caucho.jstl.el.XmlIfTag.evalBoolean(pageContext, " + 114 _gen.addXPathExpr(_select, getNamespaceContext()) + ")"); 115 116 117 out.println("if (" + select + ") {"); 118 out.pushDepth(); 119 120 if (_var != null) { 121 generateSetOrRemove(out, _var, _scope, "Boolean.TRUE"); 122 } 123 124 generateChildren(out); 125 126 out.popDepth(); 127 out.println("}"); 128 129 if (_var != null) { 130 out.println("else {"); 131 out.pushDepth(); 132 133 generateSetOrRemove(out, _var, _scope, "Boolean.FALSE"); 134 135 out.popDepth(); 136 out.println("}"); 137 } 138 } 139 } 140 | Popular Tags |