2014-07-07 37 views
0

我有一个Grails元素的Grails G:选择optionValue

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

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

enter image description here

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

感谢

回答

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> 
+0

这是不正确的,使用'raw'可以让你通过html unncoded。根据@ user1690588 – Dave

+0

的回答,你的意思是它不起作用? – injecteer

+0

你的第一句话是不正确的。你声明它不能使用g.select标签完成。它可以。 – Dave

1

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

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