HTML nbsp实体未呈现为非中断空间



我正在更新scala-play应用程序中的日期格式化程序,以确保日期不会中断到新的行上,如下所示:

def formatDate(localDate: LocalDate, pattern: String = "d MMMM yyyy"): String = {
val d = java.util.Date.from(localDate.atStartOfDay(zoneId).toInstant)
create(pattern).format(d).replaceAll(" ", " ")
}

问题是,这是将 输出到页面中,而不是空间实体中——这可能是什么原因?

我想这是在Twirl模板中。

默认情况下,出于安全考虑,对所有动态内容进行编码,以避免一些常见的攻击(XSS(。请参见此处:https://www.playframework.com/documentation/2.8.x/ScalaTemplates#Escaping

你可以使用

@Html(formatDate(theDate))

或者更好的是,只需使用适当的字符而不是HTML字符实体:

val nbsp = "u00A0"
create(pattern).format(d).replaceAll(" ", nbsp)

BTW,我认为通常的方法是使用CSS规则来避免破坏其容器内的文本,而不是将其硬编码到应用程序中。看见https://developer.mozilla.org/en-US/docs/Web/CSS/white-space

最新更新