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 JstlCoreWhen extends JstlNode { 41 private static final QName TEST = new QName("test"); 42 43 private String _test; 44 private JspAttribute _testAttr; 45 46 49 public void addAttribute(QName name, String value) 50 throws JspParseException 51 { 52 if (TEST.equals(name)) 53 _test = value; 54 else 55 throw error(L.l("`{0}' is an unknown attribute for <{1}>.", 56 name.getName(), getTagName())); 57 } 58 59 62 public void addAttribute(QName name, JspAttribute value) 63 throws JspParseException 64 { 65 if (TEST.equals(name)) 66 _testAttr = value; 67 else 68 throw error(L.l("`{0}' is an unknown jsp:attribute for <{1}>.", 69 name.getName(), getTagName())); 70 } 71 72 75 public boolean hasScripting() 76 { 77 return (super.hasScripting() || 78 hasScripting(_test) || hasScripting(_testAttr)); 79 } 80 81 86 public void printXml(WriteStream os) 87 throws IOException 88 { 89 os.print("<c:when test=\""); 90 printXmlText(os, _test); 91 os.print("\">"); 92 93 printXmlChildren(os); 94 95 os.print("</c:when>"); 96 } 97 98 101 public void generate(JspJavaWriter out) 102 throws Exception 103 { 104 if (_test == null && _testAttr == null) 105 throw error(L.l("required attribute `test' missing from <{0}>", 106 getTagName())); 107 108 String ifExpr; 109 110 if (_testAttr != null) 111 ifExpr = _testAttr.generateValue(boolean.class); 112 else 113 ifExpr = generateValue(boolean.class, _test); 114 115 out.println("if (" + ifExpr + ") {"); 116 out.pushDepth(); 117 118 generateChildren(out); 119 120 out.popDepth(); 121 out.println("}"); 122 } 123 } 124 | Popular Tags |