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 40 public class JstlCoreIf extends JstlNode { 41 private static final QName TEST = new QName("test"); 42 private static final QName VAR = new QName("var"); 43 private static final QName SCOPE = new QName("scope"); 44 45 private String _test; 46 private String _var; 47 private String _scope; 48 49 private JspAttribute _testAttr; 50 51 54 public void addAttribute(QName name, String value) 55 throws JspParseException 56 { 57 if (TEST.equals(name)) 58 _test = value; 59 else if (VAR.equals(name)) 60 _var = value; 61 else if (SCOPE.equals(name)) 62 _scope = value; 63 else 64 throw error(L.l("`{0}' is an unknown attribute for <{1}>.", 65 name.getName(), getTagName())); 66 } 67 68 71 public void addAttribute(QName name, JspAttribute value) 72 throws JspParseException 73 { 74 if (TEST.equals(name)) 75 _testAttr = value; 76 else 77 throw error(L.l("`{0}' is an unknown jsp:attribute for <{1}>.", 78 name.getName(), getTagName())); 79 } 80 81 84 public boolean hasScripting() 85 { 86 return (super.hasScripting() || 87 hasScripting(_test) || hasScripting(_testAttr)); 88 } 89 90 95 public void printXml(WriteStream os) 96 throws IOException 97 { 98 os.print("<c:if test=\""); 99 if (_testAttr != null) 100 _testAttr.printXml(os); 101 else 102 printXmlText(os, _test); 103 os.print("\">"); 104 105 printXmlChildren(os); 106 107 os.print("</c:if>"); 108 } 109 110 113 public void generate(JspJavaWriter out) 114 throws Exception 115 { 116 if (_test == null && _testAttr == null) 117 throw error(L.l("required attribute `test' missing from <{0}>", 118 getTagName())); 119 120 String ifExpr; 121 122 if (_testAttr != null) 123 ifExpr = _testAttr.generateValue(boolean.class); 124 else 125 ifExpr = generateValue(boolean.class, _test); 126 127 out.println("if (" + ifExpr + ") {"); 128 out.pushDepth(); 129 130 if (_var != null) 131 generateSetNotNull(out, _var, _scope, "Boolean.TRUE"); 132 133 generateChildren(out); 134 135 out.popDepth(); 136 out.println("}"); 137 138 if (_var != null) { 139 out.println("else {"); 140 out.pushDepth(); 141 142 generateSetNotNull(out, _var, _scope, "Boolean.FALSE"); 143 144 out.popDepth(); 145 out.println("}"); 146 } 147 } 148 } 149 | Popular Tags |