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("\"","""}'/>
这给了我想要的 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("\"",""")] = p
}
并在 select 中使用它:
<g:select class="form-control sbt-color" name="project" value ="${params.project.encodeAsHTML()}" from="${projectMap.entrySet()}" optionKey="value" optionValue="key"/>
顺便说一句,我需要 .encodeAsHTML()
来更正上次选择的选项的显示
当我使用 ${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("\"","""}'/>
这给了我想要的 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("\"",""")] = p
}
并在 select 中使用它:
<g:select class="form-control sbt-color" name="project" value ="${params.project.encodeAsHTML()}" from="${projectMap.entrySet()}" optionKey="value" optionValue="key"/>
顺便说一句,我需要 .encodeAsHTML()
来更正上次选择的选项的显示