【问题标题】:Grails - avoiding conversion when rendering variable value in GSPGrails - 在 GSP 中呈现变量值时避免转换
【发布时间】:2014-03-18 10:24:41
【问题描述】:

我正在将旧的 grails 应用程序移植到新版本 (2.3.7),但我遇到了一个错误,我不知道如何解决...这里有人有什么想法吗?

在其中一个网页上,我有一个半大的 javascript 计算金额。该网站是多语言的,因此金额的计算和格式取决于国家/地区。代码如下所示:

<script type="text/javascript">
<!--

  ... a lot of other javascript

// format an amount to display - country dependant

function formatAmount (amount) {
${country.javaScriptAmount}
}

  ... a lot of other javascript

//-->
</script>

格式化金额的代码在每个国家的常量变量“country”中——它是一个常量字符串(并声明为“final”)。在旧的 grails 版本中,这工作正常,呈现的页面如下所示:

// format an amount to display - country dependant

function formatAmount (amount) {

  ... other code

  var krString
  if (kkr > 0)
    if (kronor < 10)
      krString = kkr + " 00" + kronor
    else if (kronor < 100)
      krString = kkr + " 0" + kronor
    else
      krString = kkr + " " + kronor
    else
      krString = kronor.toString ()

  ... other code

}

但在新版本中是这样的:

function formatAmount (amount) {

  ... other code

  var krString
  if (kkr &gt; 0)
    if (kronor &lt; 10)
      krString = kkr + &quot; 00&quot; + kronor
    else if (kronor &lt; 100)
      krString = kkr + &quot; 0&quot; + kronor
    else
      krString = kkr + &quot; &quot; + kronor
    else
      krString = kronor.toString ()

  ... other code

}

在渲染 GSP 文件中的变量值时,如何阻止 grails 将 /" 转换为 >/"?我将不胜感激一些建议! :-)

来自瑞典的安德斯

【问题讨论】:

    标签: javascript grails gsp


    【解决方案1】:

    为了防止Cross Site Scripting grails 转义${} 表达式中的所有内容。

    您可以通过使用raw 编解码器来强制grails 停止对您的表达式进行编码,如下所示:

    ${raw(country.javaScriptAmount)}
    

    <g:encodeAs codec="Raw">
        ${country.javaScriptAmount}
    </g:encodeAs>
    

    ${country.javaScriptAmount.encodeAsRaw()}
    

    【讨论】:

    • 啊哈。工作得很好。阅读有关跨站点脚本攻击的信息也很有趣。所以我想新的默认编码是一件好事。太好了,在这样的特殊情况下很容易转向。谢谢你们俩的时间。 :-)
    【解决方案2】:

    有一个配置变量来控制所有 GSP 页面上的默认编码:

    grails.views.default.codec = "none" // none, html, base64
    

    【讨论】:

      猜你喜欢
      • 2011-11-13
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-18
      相关资源
      最近更新 更多