HTML nbsp 实体未呈现为不间断 space

HTML nbsp entity not rendering as a non-breaking space

我正在更新 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(" ", " ")
  }

问题是这是将   输出到页面,而不是 space 实体 - 这可能是什么原因?

我想这是在 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)

顺便说一句,我认为这样做的通常方法是使用 CSS 规则来避免破坏其容器内的文本,而不是 hard-coding 进入应用程序。参见 https://developer.mozilla.org/en-US/docs/Web/CSS/white-space