gpt4 book ai didi

grails - 如何正确连接Gr​​ails中的两个消息属性?

转载 作者:行者123 更新时间:2023-12-02 15:42:28 25 4
gpt4 key购买 nike

一个输入字段上的相同消息属性(编码为HTML)正确呈现,而它(也编码为HTML)在另一个输入域中显示HTML标记。这些发生在GSP View 中。

我想串联消息属性,以避免违反DRY原则。

输入1

<input type="text" class="freeform search-input" title="${g.message(code:"registration.classSearch.field.courseNumberLevels.placeholder.tooltip", encodeAs: "HTML")}">

输入2
我看到问题所在的是三元运算符的false分支。我没有删除三元组以防万一这可能是问题的一部分。
<input title="${config.config.contains('keyword')? g.message(code:"registration.classSearch.field.keywordinputbox.placeholder.tooltip", encodeAs: "HTML"):g.message(code:"registration.classSearch.field.inputbox.placeholder.tooltip", encodeAs: "HTML") + "<br><br>" + g.message(code:"registration.classSearch.field.courseNumberLevels.placeholder.tooltip", encodeAs: "HTML")}">

从输入2中删除 encodeAs: "HTML"会使其正确显示。
<input title="${config.config.contains('keyword')? g.message(code:"registration.classSearch.field.keywordinputbox.placeholder.tooltip", encodeAs: "HTML"):g.message(code:"registration.classSearch.field.inputbox.placeholder.tooltip", encodeAs: "HTML") + "<br><br>" + g.message(code:"registration.classSearch.field.courseNumberLevels.placeholder.tooltip")}"

删除两个 <br><br>不会产生任何预期的效果。将第一个 g.message更改为纯文本消息属性也无效。

的输出输入1 :

<input type="text" class="freeform search-input" title="<b>Undergraduate Level</b>:<br>0&amp;ndash;4999<br><br><b>Graduate Level</b>:</br>5000+">

的输出输入2个encodeAs:

<input title="These special characters are ignored: *^&amp;#39;!@$#&amp;amp;?[ ] ( ) |. The % is allowed.&amp;lt;b&amp;gt;Undergraduate Level&amp;lt;/b&amp;gt;:&amp;lt;br&amp;gt;0&amp;amp;ndash;4999&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Graduate Level&amp;lt;/b&amp;gt;:&amp;lt;/br&amp;gt;5000+" type="text" class="freeform search-input">

的输出输入2不含encodeAs:

<input title="These special characters are ignored: *^&amp;#39;!@$#&amp;amp;?[ ] ( ) |. The % is allowed.<b>Undergraduate Level</b>:<br>0&amp;ndash;4999<br><br><b>Graduate Level</b>:</br>5000+" type="text" class="freeform search-input">

我希望它在连接和不连接的情况下表现相同,但事实并非如此。我们不应该以这种方式连接吗?

更新
这个 SO thread about HTML tags in message.properties讨论了防止XSS的HTML编码,这使我认识到encodeA正在执行应做的工作-将消息编码为HTML。删除encodeAs允许HTML呈现而不是被编码为HTML实体。

但这仍不能解释为什么输入2具有HTML实体时呈现输入1的HTML。

最佳答案

连接两个消息属性

这个问题可以简化为html中的两个字符串组成的问题。

title = "${g.message(code:'1')}<br><br/>${g.message(code:'2')}"

关于grails - 如何正确连接Gr​​ails中的两个消息属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55637939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com