1

grails を使い始めたばかりで、問題が発生しています。

プロジェクトのホームページに「コントローラー」と「ビュー」があります(ホームページのモデルはありません)

ビューを「index.gsp」と呼び、ディレクトリ views/home に配置しました

しかし、レンダリング呼び出しで「template」属性を使用してインデックスを明示的に指定したにもかかわらず、grails はページ「home.gsp」(次に home.jsp) を読み込もうとしています。

class HomeController {
    String someparameter = "xyzzy"
    def index = { 
        render(view:"home", template:"index")  // I also tried "index.gsp" and "home/index.gsp"
    }
}

ビューレステンプレートレンダリングの例でしか使用されていないため、「テンプレート」属性を間違って使用している可能性があると思います。ただし、ドキュメントにはそのような制限はありません。

テンプレートの名前を明示的に指定する方法はありますか? 「home.gsp」という名前に変更しましたが、何が問題なのかを理解したいと思います。

(このアプリケーションのホームページには「モデル」はありません。Grails はモデルを持つコントローラーを使用します。この例では、gsp テンプレートの「someparameter」に ${someparameter} としてアクセスできます。)

4

1 に答える 1

8

Grails テンプレートとは何かを誤解している可能性があると思います。テンプレートは再利用可能なフラグメントと考えてください。テンプレートは、アンダースコアで始まる GSP であり、_menu.gsp通常は のようなタグを使用して別の GSP 内からレンダリングします<g:render template="menu"/>

ビューとテンプレートの両方を同時にレンダリングしても意味がありません。この時点では、それらは相互に排他的です。

レイアウトの実装を検討していますか? その場合は、ドキュメントまたはgrails.org の説明を参照してください。

基本的に、ビュー<meta name="layout" content="main">のタグに<head/>タグがあります。これは、ビューがmain配置されたレイアウトと一緒にメッシュ化されることを示します。grails-app/views/layouts/main.gsp

于 2009-08-04T07:28:55.297 に答える