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
我正在更新 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