工作需要,需要用JSTL將從數據庫取出的多行文本中的 \n 替換成 <br />。
一、將取出的多行文本放在<pre></pre>標簽里
優點:簡單,用HTML解決了問題
缺點:pre 好象不認CSS樣式,這個標簽盡忠職守地“保持原樣”,連CSS也不認了,這個缺點是致命的
二、純JSTL方式 <c:out value="${fn:replace(content, '\n', '<br />')}" />
一運行,會拋出N多錯誤。
三、JSTL + JSP scriptlet
<%
request.setAttribute("x_n", "\n");
%>
<c:out value="${fn:replace(content, x_n, '<br />')}" />
優點:簡單,易懂,修改方便
缺點:引用了JSP scriptlet,對于有“潔癖”的程序員是不能容忍的;代碼較多。
四、JSTL + JavaBean
也無新意,不過這樣一寫,scriptlet沒有了,不過修改的話要修改類文件了。
五、使用監聽器
優點:在應用初始化時在application作用域中將 \n 作為一個attribute,代碼少,節約資源
缺點:需要配置XML,修改時需要在類中修改。
六、使用自定義標簽
自定義一個db2html標簽,<c:out value="${fnx:db2html(content)}" />
優點:使用簡單,
缺點:配置較多。麻煩。