Grails - 在params中转义双引号

时间:2015-05-27 08:45:13

标签: grails quotes double-quotes

当我使用$ {projectList}在网页上打印时,我有一个字符串数组看起来像这样:

CREATE CLUSTERED INDEX [_dta_index_iftable_c_8_205243786__K11D_K12D_K2D] ON [dbo].[iftable] 
(
    [cdate] DESC,
    [ctime] DESC,
    [mid] DESC
)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]

我有一个选择的表单:

[foo,bar,foo "bar"]

如果我选择' foo" bar"' params.project只会得到foo'。有没有办法在不改变源数据的情况下解决这个问题?

更新 到目前为止,我发现的唯一解决方法是使用:

<g:select class="form-control sbt-color" name='project' value ='${params.project.encodeAsHTML()}' from='${projectList}'/>

这给了我params.project我想要的,但在选择列表本身双引号被&#34;它看起来很糟糕。

2 个答案:

答案 0 :(得分:2)

删除.encodeAsHTML()后,这将有效。试试这个

<g:select class="form-control sbt-color" name='project' value ='${params.project}' from='${projectList}'/>

答案 1 :(得分:0)

我找到了一个合适的解决方案,但仍然需要移动源代码。

我使用地图而不是数组:

def projectMap = [:]
for (p in projectList){
    projectMap[p.replaceAll("\"","&quot;")] = p
}

并在选择中使用它:

<g:select class="form-control sbt-color" name="project" value ="${params.project.encodeAsHTML()}" from="${projectMap.entrySet()}" optionKey="value" optionValue="key"/>

顺便说一下,我需要.encodeAsHTML()来纠正上次选择的选项的显示