【问题标题】:Grails g:select optionValueGrails g:选择选项值
【发布时间】:2014-07-07 09:25:28
【问题描述】:

我有一个 grails 元素

<g:select name="name" from="${list}" optionKey='code' optionValue='name' ></g:select>

其中 optionValue 包含一些这样的 HTML 元素,

我只想显示国家名称,我已经尝试使用 encodeAsHTML(),但不知道如何使用。请提出建议。

谢谢

【问题讨论】:

    标签: grails gsp


    【解决方案1】:

    您不能使用开箱即用的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>
    

    【讨论】:

    • 这是不正确的,使用'raw'可以让你通过未编码的html。根据@user1690588的回答
    • 你的首句不正确。您声明无法使用 g.select 标签完成。可以的。
    • 没有。最初的句子很好。您必须在将输入提供给select 之前对其进行预处理,因为选择无法自行对其进行转义
    • 那么我们必须同意不同意。您的回答使读者相信他们不能使用 g.select 期间。否 - 您不需要预处理,您可以在 optionValue 属性中使用 raw,例如 optionValue="${{raw(someVariable)}}"
    【解决方案2】:

    这是因为XSS 而发生的。而不是encodeAsHTML 使用raw。试试这个:

    <g:select name="name" from="${list.collect { raw(it) }}" optionKey='code' optionValue='name'/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多