1 16 17 package org.apache.taglibs.standard.examples.taglib; 18 19 import java.io.IOException ; 20 import java.io.PrintWriter ; 21 import java.io.Reader ; 22 import java.io.Writer ; 23 24 import javax.servlet.RequestDispatcher ; 25 import javax.servlet.ServletResponseWrapper ; 26 import javax.servlet.http.HttpServletRequest ; 27 import javax.servlet.http.HttpServletResponse ; 28 import javax.servlet.jsp.JspException ; 29 import javax.servlet.jsp.tagext.TagSupport ; 30 31 import org.apache.taglibs.standard.examples.util.IOBean; 32 import org.apache.taglibs.standard.examples.util.ServletResponseWrapperForWriter; 33 34 40 public class ResourceTag extends TagSupport { 41 42 45 private String id; 46 private String resource; 47 48 private Reader reader; 49 50 53 public ResourceTag() { 54 super(); 55 init(); 56 } 57 58 private void init() { 59 id = null; 60 resource = null; 61 } 62 63 66 69 public void setId(String id) { 70 this.id = id; 71 } 72 73 76 public void setResource(String resource) { 77 this.resource = resource; 78 } 79 80 83 public int doStartTag() throws JspException { 84 reader = getReaderFromResource(resource); 85 exposeVariable(reader); 86 return EVAL_BODY_INCLUDE; 87 } 88 89 public int doEndTag() throws JspException { 90 try { 91 reader.close(); 92 } catch (IOException ex) {} 93 reader = null; 94 return EVAL_PAGE; 95 } 96 97 100 public void release() { 101 super.release(); 102 init(); 103 } 104 105 108 private Reader getReaderFromResource(String name) throws JspException { 109 HttpServletRequest request = 110 (HttpServletRequest )pageContext.getRequest(); 111 HttpServletResponse response = 112 (HttpServletResponse )pageContext.getResponse(); 113 RequestDispatcher rd = null; 114 115 IOBean ioBean = new IOBean(); 118 Writer writer = ioBean.getWriter(); 119 ServletResponseWrapper responseWrapper = 120 new ServletResponseWrapperForWriter( 121 response, new PrintWriter (writer)); 122 rd = pageContext.getServletContext().getRequestDispatcher(name); 123 try { 124 rd.include(request, responseWrapper); 125 return ioBean.getReader(); 126 } catch (Exception ex) { 127 throw new JspException (ex); 128 } 129 } 130 131 134 private void exposeVariable(Reader reader) { 135 if (id != null) { 136 pageContext.setAttribute(id, reader); 137 } 138 } 139 } 140 | Popular Tags |