Grails - 在参数中转义双引号

Grails - escape double quotes in params

当我使用 ${projectList}:

在网页上打印时,我有一个字符串数组看起来像这样
[foo,bar,foo "bar"]

我有一个表格 select:

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

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

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

<g:select class="form-control sbt-color" name='project' value ='${params.project}' from='${projectList*.replaceAll("\"","&quot;"}'/>

这给了我想要的 params.project,但在 select 列表本身中,双引号被 " 替换,看起来很糟糕。

删除 .encodeAsHTML() 后这将起作用。试试这个

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

我找到了一个合适的解决方案,但我仍然不得不移动源。

我使用地图而不是数组:

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

并在 select 中使用它:

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

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