1 16 17 18 package org.apache.struts.webapp.example2; 19 20 21 import java.io.IOException ; 22 import javax.servlet.http.HttpServletRequest ; 23 import javax.servlet.http.HttpServletResponse ; 24 import javax.servlet.jsp.JspException ; 25 import javax.servlet.jsp.JspWriter ; 26 import javax.servlet.jsp.tagext.TagSupport ; 27 import org.apache.struts.util.MessageResources; 28 import org.apache.struts.util.ResponseUtils; 29 30 31 38 39 public class LinkUserTag extends TagSupport { 40 41 42 44 45 48 protected String page = null; 49 50 51 54 protected static MessageResources messages = 55 MessageResources.getMessageResources 56 ("org.apache.struts.webapp.example.ApplicationResources"); 57 58 59 62 private String name = "user"; 63 64 65 67 68 71 public String getPage() { 72 73 return (this.page); 74 75 } 76 77 78 83 public void setPage(String page) { 84 85 this.page = page; 86 87 } 88 89 90 93 public String getName() { 94 95 return (this.name); 96 97 } 98 99 100 105 public void setName(String name) { 106 107 this.name = name; 108 109 } 110 111 112 114 115 120 public int doStartTag() throws JspException { 121 122 HttpServletRequest request = 124 (HttpServletRequest ) pageContext.getRequest(); 125 StringBuffer url = new StringBuffer (request.getContextPath()); 126 url.append(page); 127 User user = null; 128 try { 129 user = (User) pageContext.findAttribute(name); 130 } catch (ClassCastException e) { 131 user = null; 132 } 133 if (user == null) 134 throw new JspException 135 (messages.getMessage("linkUser.noUser", name)); 136 if (page.indexOf("?") < 0) 137 url.append("?"); 138 else 139 url.append("&"); 140 url.append("username="); 141 url.append(ResponseUtils.filter(user.getUsername())); 142 143 HttpServletResponse response = 145 (HttpServletResponse ) pageContext.getResponse(); 146 StringBuffer results = new StringBuffer ("<a HREF=\""); 147 results.append(response.encodeURL(url.toString())); 148 results.append("\">"); 149 150 JspWriter writer = pageContext.getOut(); 152 try { 153 writer.print(results.toString()); 154 } catch (IOException e) { 155 throw new JspException 156 (messages.getMessage("linkUser.io", e.toString())); 157 } 158 159 return (EVAL_BODY_INCLUDE); 161 162 } 163 164 165 166 171 public int doEndTag() throws JspException { 172 173 174 JspWriter writer = pageContext.getOut(); 176 try { 177 writer.print("</a>"); 178 } catch (IOException e) { 179 throw new JspException 180 (messages.getMessage("link.io", e.toString())); 181 } 182 183 return (EVAL_PAGE); 184 185 } 186 187 188 191 public void release() { 192 193 super.release(); 194 this.page = null; 195 this.name = "user"; 196 197 } 198 199 200 } 201 | Popular Tags |