2

私のGSPには次のようなものがあります:

<head>
  <meta property="og:image"
    content="${createLink(controller:'main', action:'getImage', id:item.id, params:[width: 115, height:200], absolute : true)}" />

</head>

生成されたコードを調べると、次のことがわかりました。

<meta property="og:image"
    content="http://www.myurl.com/main/getImage/faf878ef93996f26c1?width=115&amp;height=200" />

これに関する問題は、いくつかのアンプがあることです。内部の値。

私のコントローラーで:

パラメータは次のようになります。

[width:115, amp;height:200, id:faf878ef93996f26c1, action:getImage, controller:main]

問題は、アンプがあるため、params.height が機能しなくなったことです。また。

この URL を正しくデコードするにはどうすればよいですか? Grails がアンプを配置しない方法はありますか? URLの中に?

GSP本体で次のことを行うと:

<body>
  ${createLink(controller:'main', action:'getImage', id:item.id, params:[width: 115, height:200], absolute : true)}"
</body>

私は正しいURLを取得します:

http://www.myurl.com/main/getImage/faf878ef93996f26c1?width=115&height=200

Grails がこれらの URL を異なるように設定するのはなぜですか? それを修正する方法は?

4

3 に答える 3

1

問題は、リンクを gsp 内の文字列としてレンダリングしているため、grails がリンクを印刷する前にエンコードすることです。リンクは必要ありません。試してみてください。

"${m&m}" とすると、grails がそれを m&m としてレンダリングすることがわかります。

1つの解決策は、直接レンダリングを使用することです。これにより、grailsで追加のエンコーディングをバイパスできると思います

<% out << '<meta property="og:image" content="' + createLink(controller:'main', action:'getImage', id:item.id, params:[width: 115, height:200], absolute : true) + '" />' %>
于 2013-07-01T22:45:33.953 に答える
1

その特定のページのデフォルトのエンコードを無効にすることもできます。

gspページの上部に次を配置します

<%@page defaultCodec="none" %>
于 2013-07-02T06:40:04.803 に答える