【问题标题】:Gsp pages preserve html tags when replacing with stringGsp页面在替换为字符串时保留html标签
【发布时间】:2013-12-05 07:50:57
【问题描述】:

我正在使用 grails 2.3

<td>${params?.query?name.replace(params.query,'<span>'+params.query+'</span>'):name}</td>

在 gsp 页面的上述语句中,如果 params.query 值可用,我想突出显示 name 属性。但生成的代码包含html等价字符。

<td>&lt;span&gt;Mess&lt;/span&gt;age</td>

如何在 gsp 页面中显示如下。在 1.3 版本中它工作。但在 2.3 版本中,相同的代码看起来像上面一样。我想将其显示为,

<span>message</span>

【问题讨论】:

    标签: grails grails-2.3


    【解决方案1】:

    您的 Config.groovy 中可能有此设置:

    grails.views.default.codec = "html"
    

    这意味着在 GSP 中的所有 ${} 表达式中,将编码特殊的 HTML 字符,如“”。一般来说,这是一个合理的设置,因为它可以防止 XSS 攻击。

    如果您需要避免某个特定表达式的这种默认行为,您可以使用这个:

    <td><%=params?.query?name.replace(params.query,'<span>'+params.query+'</span>'):name%></td>
    

    【讨论】:

      【解决方案2】:

      你可以写:

      <td>
      <g:if test="${params?.query}">
          <span>${params.query}</span>
      </g:if>
      <g:else>
          ${name}
      </g:else>
      </td>
      

      【讨论】:

        【解决方案3】:

        我认为这是您可以在Config.groovy 中配置的内容

        尝试以下设置

        grails.views.default.codec = "html" 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多