工作需要,需要用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)}" />
优点:使用简单,
缺点:配置较多。麻烦。