カスタムタグで<br />。
そんな訳で。
昨日JSPのカスタムタグを試しに作ってみた。
欲しかったのは、改行コードを含んだ文字列を与えると
HTMLの<br />タグに変換して表示するだけのもの。
めちゃ適当なので、動きはしたけど
本当にこんなんでいいのか?とか思ったり(笑)
とりあえず、完成したのは、こんな↓感じ。
タグ・ハンドラクラス
Nl2br.java
package customTag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTag;
import javax.servlet.jsp.tagext.Tag;
public class Nl2br implements BodyTag {
private BodyContent bodyContent;
public void setPageContext(PageContext pageContext) {}
public void setParent(Tag arg0) {}
public int doStartTag() throws JspException {
return EVAL_BODY_BUFFERED;
}
public void setBodyContent(BodyContent bodyContent) {
this.bodyContent = bodyContent;
}
public void doInitBody() throws JspException {}
public int doAfterBody() throws JspException {
try {
JspWriter jspWrite = bodyContent.getEnclosingWriter();
String convertString = bodyContent.getString();
jspWrite.print(convertString.replaceAll("\r\n|\n","<br />\n"));
} catch (IOException e) {
throw new JspException(e.getMessage());
}
return SKIP_BODY;
}
public int doEndTag() throws JspException {
return EVAL_PAGE;
}
public void release() {}
public Tag getParent() {
return null;
}
}
タグ設定ファイル
customTag.tld
<?xml version="1.0" encoding="Shift_JIS" ?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>original tag</shortname>
<tag>
<name>nl2br</name>
<tagclass>customTag.Nl2br</tagclass>
<bodycontent>JSP</bodycontent>
<info>改行コードをHTML改行タグに変換して表示</info>
</tag>
</taglib>
JSPファイル
customTagTest.jsp
<%@ page contentType="text/html;charset=Windows-31J" %>
<%@ taglib uri="customTag.tld" prefix="ct" %>
<html>
<body>
<ct:nl2br>
ここに書いた内容は
ちゃんと改行コードが
変換されて表示されるんですよ。
</ct:nl2br>
</body>
</html>