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