package steed.tag.outhtml;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.log4j.Logger;
import steed.util.base.BaseUtil;
public class TestJavaScript extends BodyTagSupport {
private static final long serialVersionUID = -1523362354887392103L;
@Override
public int doAfterBody() throws JspException {
return SKIP_BODY;
}
@Override
public int doStartTag() throws JspException {
return EVAL_BODY_BUFFERED;
}
@Override
public int doEndTag() throws JspException {
try {
JspWriter out = pageContext.getOut();
out.write("<h1 onclick='alert(18888);'>测试</h1>");
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_PAGE;
}
}
页面正常输出:
<h1 onclick="alert(18888);">测试</h1>
但是把上面的31行改为:
out.write("<h1 onclick='alert('18888');'>测试</h1>");
页面却输出:
<h1 onclick="alert(" 18888');'="">测试</h1>
先不说单引号自动换成了双引号,等于号都多了一个。。。。
是自定义标签的bug,还是我水平问题,求各位指点。
------解决思路----------------------
这是html 双引号和单引号的问题,如何组合,网上很多例子。