現在のリクエスト ロケールに基づいてコンテンツをロードするスクリプトを作成しました。何かのようなもの
class ScriptsTagLib {
static namespace = "my"
def loadLangInfo = { attrs ->
Locale locale = RequestContextUtils.getLocale(request)
r.script() {
out << '$(function(){ loadLangInfo("'+locale.language+'") });'
}
}
}
これをレイアウトに追加すると、ページでエラーがスローされます。
行 [6] の式 [my.loadLangInfo()] の評価中にエラーが発生しました: モジュール [-page-fragments-] を追加できません。モジュール [-page-fragments-] は、この要求に処理 [延期] を必要とします - その処理は既にレンダリングされています。
エラー 2012-11-19 15:13:54,801 [http-bio-8080-exec-5] ERROR [Tomcat].[localhost] - Exception Processing ErrorPage[errorCode=500, location=/grails-errorhandler] メッセージ: java. io.UnsupportedEncodingException: 文字エンコーディング [null] はサポートされていません
しかし、レイアウトの代わりにこのタグをページに追加すると、ページは正常にレンダリングされます。
r.script()
レイアウトに追加することはできませんか?
編集:問題は実際にはレイアウト内のリソースにあります。失敗する別の例は次のとおりです。
<g:layoutHead/>
<r:script>
$(function(){ });
</r:script>
<r:layoutResources />
編集 2:コンテキストに関する詳細情報
- グレイルズ 2.0.4
- リソース 1.2.RC2
また、これはプラグイン内のレイアウトであり、1 つのアプリではありません。
Grails 2.1 ではテストされていませんが、テストされます。
編集3:
Grails 2.1.1
とGrails 2.0.4
新しい新しいプラグイン プロジェクトを使用してテストしたところ、レイアウトのスクリプト タグは無視されます。
./views/layout/test.gsp -> スクリプトは無視されました
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title><g:layoutTitle default="Insoft4 UI Plugin"/></title>
<g:layoutHead/>
<r:layoutResources />
</head>
<body>
<g:layoutBody/>
<r:script disposition="defer">
alert('layout!');
</r:script>
<r:layoutResources />
</body>
</html>
./views/index.gsp -> スクリプト OK
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Teste</title>
<meta name="layout" content="teste" />
<r:script disposition="defer">
alert('index!');
</r:script>
<r:layoutResources />
</head>
<body>
<h1>Testing this index!</h1>
<r:layoutResources />
</body>
</html>