我可以使用 sightly 显示上下文和 i18n 标签吗?
Can I use sightly display context along with i18n label?
我在我的项目中看到一个代码
${'myproj.label' @i18n, format=[sighltyObj.field1], context='text'}
目的是将变量传递给 i18n 文本 + 对文本进行安全编码。使用显示上下文和 i18n 翻译是否正确?当我使用 field1 = "Hello%20World" 进行测试时,它没有对文本进行编码,而是按原样呈现。
如何在将参数作为变量传递给 i18n 时对 html 字符串进行编码?
HTL 不会解码 format
返回的文本。我认为混淆来自说明显示上下文 text
以下内容的文档:
Use this for simple HTML content - Encodes all HTML
(来源:HTL Specification Section 1.2.1 Display Context)
但这并不意味着此上下文 解码 任何内容,它 编码 HTML 标签。
因此,如果 sighltyObj.field1
是 Hello%20World
,它将 而不是 呈现为 Hello World
,而是呈现为 Hello%20World
,正如您已经注意到的那样.
显示上下文 text
将 编码 给定文本中的所有 HTML 标签,这样您就无法 "smuggle"文本(参见代码注入)。
例如:
${'<p>This is my text</p>' @ context='text'}
将创建以下 HTML
<p>This is my text</p>
请注意 p
标签是如何 编码的 :
<p>
变成了 <p>
而 </p>
变成了 </p>
.
sighltyObj
中 field1
的 getter 必须进行 解码 以便 Hello%20World
变为 Hello World
。 Whosebug 上已经有一个答案告诉你如何做到这一点:
String result = java.net.URLDecoder.decode(url, "UTF-8");
我在我的项目中看到一个代码
${'myproj.label' @i18n, format=[sighltyObj.field1], context='text'}
目的是将变量传递给 i18n 文本 + 对文本进行安全编码。使用显示上下文和 i18n 翻译是否正确?当我使用 field1 = "Hello%20World" 进行测试时,它没有对文本进行编码,而是按原样呈现。 如何在将参数作为变量传递给 i18n 时对 html 字符串进行编码?
HTL 不会解码 format
返回的文本。我认为混淆来自说明显示上下文 text
以下内容的文档:
Use this for simple HTML content - Encodes all HTML
(来源:HTL Specification Section 1.2.1 Display Context)
但这并不意味着此上下文 解码 任何内容,它 编码 HTML 标签。
因此,如果 sighltyObj.field1
是 Hello%20World
,它将 而不是 呈现为 Hello World
,而是呈现为 Hello%20World
,正如您已经注意到的那样.
显示上下文 text
将 编码 给定文本中的所有 HTML 标签,这样您就无法 "smuggle"文本(参见代码注入)。
例如:
${'<p>This is my text</p>' @ context='text'}
将创建以下 HTML
<p>This is my text</p>
请注意 p
标签是如何 编码的 :
<p>
变成了 <p>
而 </p>
变成了 </p>
.
sighltyObj
中 field1
的 getter 必须进行 解码 以便 Hello%20World
变为 Hello World
。 Whosebug 上已经有一个答案告诉你如何做到这一点:
String result = java.net.URLDecoder.decode(url, "UTF-8");