【发布时间】:2014-07-07 09:25:28
【问题描述】:
我有一个 grails 元素
<g:select name="name" from="${list}" optionKey='code' optionValue='name' ></g:select>
其中 optionValue 包含一些这样的 HTML 元素,
我只想显示国家名称,我已经尝试使用 encodeAsHTML(),但不知道如何使用。请提出建议。
谢谢
【问题讨论】:
我有一个 grails 元素
<g:select name="name" from="${list}" optionKey='code' optionValue='name' ></g:select>
其中 optionValue 包含一些这样的 HTML 元素,
我只想显示国家名称,我已经尝试使用 encodeAsHTML(),但不知道如何使用。请提出建议。
谢谢
【问题讨论】:
您不能使用开箱即用的g.select 标记来执行此操作。您需要手动遍历您的列表:
<select name="someName">
<option value="">- no select -</option>
<g:each in="${list}" var="c">
<option value="${c.code}">${c.name.replaceFirst( /<span class='countryName'>([\w\s]+)</span>/, '$1' )}</option>
</g:each>
</select>
【讨论】:
select 之前对其进行预处理,因为选择无法自行对其进行转义
这是因为XSS 而发生的。而不是encodeAsHTML 使用raw。试试这个:
<g:select name="name" from="${list.collect { raw(it) }}" optionKey='code' optionValue='name'/>
【讨论】: