memorandums

日々のメモです。

改行コードをHTMLの改行タグにするJSP

※ソフトウェア開発演習の受講者向けのエントリーです。

ある学生が訪ねてきて、<textarea>に改行を入力すると表示は改行されません<br>を使うのはわかりますがどうプログラムすればいいでしょうか?、といった趣旨の質問がありました。恐らく、他のチームでも共通するテクニックなので以下に対策を書いておきます。

要はHTMLでは無視される半角スペースや改行コードをHTMLタグに置き換えて表示すればいいわけです。文字例の置き換えはStringクラスに標準装備されていますのでそれを使いましょう。

■test.jsp

<%@ page language="java" contentType="text/html; charset=Shift_JIS"
    pageEncoding="Shift_JIS"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>

<%
	request.setCharacterEncoding("Shift_JIS");

	String hoge = request.getParameter("hoge");  //DBにはhogeの内容を格納します
	
	if (hoge != null) {
		String hoge2 = hoge.replaceAll("\n", "<br/>").replaceAll(" ", "&nbsp;"); 
		out.print(hoge2); //表示するときだけHTMLタグに置換します。		
	}
%>

<form action="test.jsp" method="post">
	<textarea name="hoge"><%=hoge %></textarea>
	<input type="submit"/>
</form>

</body>
</html>

サニタイズや実行速度は意識していません。プロはもっといい方法を使うんじゃないかと思いますが、とりあえずこれで動作します。