JSEscapeTag.java
package sk.iway.iwcm.tags;
import java.io.IOException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
import sk.iway.iwcm.Tools;
/**
* Escapuje body tak, aby mohlo byt vlozene do JS
*
*@Title WebJET
*@Company Interway s.r.o. (www.interway.sk)
*@Copyright Interway s.r.o. (c) 2001-2002
*@author $Author: jeeff $
*@version $Revision: 1.6 $
*@created $Date: 2010/01/20 11:15:08 $
*/
public class JSEscapeTag extends BodyTagSupport
{
private static final long serialVersionUID = -7334014241009801243L;
/**
* Description of the Method
*
*@return Description of the Return Value
*@exception JspTagException Description of the Exception
*/
@Override
public int doAfterBody() throws JspTagException
{
BodyContent bc = getBodyContent();
String body = bc.getString();
bc.clearBody();
try
{
getPreviousOut().print(jsEscape(body));
}
catch (IOException e)
{
throw new JspTagException("JSEscapeTag: " + e.getMessage());
}
return SKIP_BODY;
}
public static String jsEscape(String body)
{
char content[] = new char[body.length()];
body.getChars(0, body.length(), content, 0);
StringBuilder result = new StringBuilder(content.length + 50);
for (int i = 0; i < content.length; i++) {
switch (content[i]) {
case '\n':
result.append("\\n");
break;
case '\r':
result.append(' ');
break;
case '&':
result.append("&");
break;
case '"':
result.append(""");
break;
case '\'':
result.append("\\'");
break;
default:
result.append(content[i]);
}
}
return( Tools.replace(result.toString(), "&mp;", "&"));
}
}