dom*_*nik 11 java spring spring-mvc thymeleaf
我有一个<textarea name="desc" />可能包含换行符的field(),我想用它们的HTML替换它们:<br />.我怎样才能做到这一点?我正在使用Thymeleaf 2.1.4.RELEASE.
hol*_*s83 12
正如dominik所述,\n对于换行不起作用.但是,你可以使用
.
${#strings.replace(desc,'
','<br>')}
或者通过转义来防止代码注入:
${#strings.replace(#strings.escapeXml(desc),'
','<br>')}
与在JSP中一样,不可能使用简单直接的方法
${#strings.replace(desc, '\n', '<br />')}
至少有两个问题:
<和>内部表达式,因此抛出异常我找到的第一个问题的解决方案是在控制器中设置换行符并将其传递给视图.
为了解决您需要使用第二个问题<,而不是<和>代替>.还记得这意味着使用th:utext而不是th:text
// in controller:
model.addAttribute("newLineChar", '\n');
// in view
${#strings.replace(desc, newLineChar, '<br />')}
如果您正在使用Thymeleaf + Spring(这意味着Thymeleaf将使用SpEL而不是OGNL),您也可以使用SpEL T operator.这样您就不必在控制器中声明换行变量,但在这种情况下请注意换行符分隔符会因应用程序运行的操作系统而异:
${#strings.replace(desc, T(System).getProperty('line.separator'), '<br />')}
我最终将使用的是上述+ Apache StringUtils的组合,它定义了public static final String LF = "\n";:
${#strings.replace(desc, T(org.apache.commons.lang3.StringUtils).LF, '<br />')}