※ソフトウェア開発演習の受講者向けのエントリーです。
ある学生が訪ねてきて、<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(" ", " "); out.print(hoge2); //表示するときだけHTMLタグに置換します。 } %> <form action="test.jsp" method="post"> <textarea name="hoge"><%=hoge %></textarea> <input type="submit"/> </form> </body> </html>
※サニタイズや実行速度は意識していません。プロはもっといい方法を使うんじゃないかと思いますが、とりあえずこれで動作します。