1 28 29 package com.caucho.jsp.java; 30 31 import com.caucho.jsp.JspParseException; 32 import com.caucho.vfs.WriteStream; 33 34 import java.io.IOException ; 35 36 public class JstlCoreChoose extends JstlNode { 37 40 public void addChild(JspNode node) 41 throws JspParseException 42 { 43 if (node instanceof JstlCoreWhen) 44 super.addChild(node); 45 else if (node instanceof JstlXmlWhen) 46 super.addChild(node); 47 else if (node instanceof JstlCoreOtherwise) 48 super.addChild(node); 49 else 50 throw error(L.l("<{0}> is not allowed as a child of <{1}>. Only <when> and <otherwise> are allowed children.", 51 node.getTagName(), getTagName())); 52 } 53 54 57 public JspNode addText(String text) 58 throws JspParseException 59 { 60 if (! isWhitespace(text)) 61 throw error(L.l("text is not allowed as a child of <{1}>. Only <c:when> and <c:otherwise> are allowed children.", 62 getTagName())); 63 64 return null; 65 } 66 67 70 public void endElement() 71 throws JspParseException 72 { 73 if (_children == null || _children.size() == 0) 74 throw error(L.l("<{0}> must have at least one <c:when> clause.", 75 getTagName())); 76 } 77 78 83 public void printXml(WriteStream os) 84 throws IOException 85 { 86 os.print("<c:choose>"); 87 88 printXmlChildren(os); 89 90 os.print("</c:choose>"); 91 } 92 93 96 public void generate(JspJavaWriter out) 97 throws Exception 98 { 99 for (int i = 0; i < _children.size(); i++) { 100 JspNode node = _children.get(i); 101 102 if (i != 0) 103 out.print("else "); 104 105 node.generate(out); 106 } 107 } 108 } 109 | Popular Tags |