1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.portals.bridges.struts.taglib;
18
19 import java.io.IOException;
20
21 import javax.servlet.http.HttpServletRequest;
22 import javax.servlet.jsp.JspException;
23 import javax.servlet.jsp.JspWriter;
24 import javax.servlet.jsp.tagext.TagSupport;
25
26 /***
27 * Generate a script tag for use within a Portlet environment.
28 * <p>
29 * The src attribute is resolved to a context relative path and may contain
30 * a relative path (prefixed with one or more ../ elements).
31 * </p>
32 * <p>
33 * Note: works equally well within a Portlet context as a Web application context.
34 * </p>
35 *
36 * @author <a href="mailto:ate@douma.nu">Ate Douma</a>
37 * @version $Id: ScriptTag.java 517068 2007-03-12 01:44:37Z ate $
38 */
39 public class ScriptTag extends TagSupport
40 {
41 /***
42 * The language attribute for the script tag.
43 * <p>
44 * Defaults to "Javascript1.1"
45 * </p>
46 */
47 protected String language;
48
49 /***
50 * The script src path.
51 * <p>
52 * May contain a relative path (prefixed with one or more ../ elements).<br/>
53 * </p>
54 */
55 protected String src;
56
57 public String getLanguage()
58 {
59 return language;
60 }
61 public void setLanguage(String language)
62 {
63 this.language = language;
64 }
65 public String getSrc()
66 {
67 return src;
68 }
69 public void setSrc(String src)
70 {
71 this.src = src;
72 }
73
74 public int doStartTag() throws JspException
75 {
76 StringBuffer buffer = new StringBuffer("<script language=\"");
77 if (language != null)
78 buffer.append(language);
79 else
80 buffer.append("Javascript1.1");
81 buffer.append("\" src=\"");
82 if (src.startsWith("/"))
83 {
84 buffer.append(((HttpServletRequest) pageContext.getRequest())
85 .getContextPath());
86 buffer.append(src);
87 }
88 else
89 {
90 buffer.append(TagsSupport.getContextRelativeURL(pageContext,src,true));
91 }
92 buffer.append("\"/></script>");
93 JspWriter writer = pageContext.getOut();
94 try
95 {
96 writer.print(buffer.toString());
97 } catch (IOException e)
98 {
99 throw new JspException(e);
100 }
101 return (SKIP_BODY);
102 }
103
104 public int doEndTag()
105 {
106 return EVAL_PAGE;
107 }
108
109 public void release()
110 {
111 super.release();
112 language = null;
113 src = null;
114 }
115 }