短い答え: 確かに. しかし、本当の問題は「どうやって?」だと思います。:)
Spring MVC は Grails が構築されたベースであるため、Grails ができることを行うことができます。Grails-resources は、作業の開発を容易にするために Grails が作成する単なるユーティリティです。Spring で同じことをしたい場合は、いくつかの作業を行う必要があります。
まず、Spring MVC にはリソースを公開する方法があります (参照、第 17.15.6 章「リソースの提供の構成」)。例えば:
<mvc:resources mapping="/images/**" location="/images/"/>
上記の行は、すべてのファイル[Web folder]/images/
をリソースとして公開し、Web ブラウザーから要求できます。
次に、リソースを Grails のように簡単に HTML に埋め込むには、Springをサイトメッシュ、freemarker/velocity/JSP などの他のビュー テクノロジーと組み合わせる必要があります (これは Grails が舞台裏で行います)。grails tagの代わりに、freemarkerまたは Velocity のマクロがあります。ただし、組み込みのマクロが常に適切であるとは限らないため、独自のカスタム マクロをいくつか作成することをお勧めします。
Grails と Spring MVC の両方を使用しました。開発者の作業を楽にする Grails の取り組みには感謝していますが、Spring では状況が少し異なります。Spring では、さらにコードを記述し、さらに選択を行うことができます (Grails では、それらは「デフォルト」として選択され、カスタマイズしたくない場合は「非表示」になります)。見返りとして、根底にあるメカニズムをより意識する必要がありますが、これは良いことです.
いくつかの Web プロジェクトでは、レイアウトに sitemesh を使用し、HTML レンダリング エンジンとして freemarker を使用しましたが、かなりうまく機能します。
アップデート:
mvc:resources
それがあなたの問題に対する完全な答えではないことを明確にしたいと思います。これは、ブラウザーが取得できるように Web リソースを公開することの一部にすぎません。Grails ではこれがデフォルトで行われていますが、Spring ではそうではありません。フォルダ 'images' 内のコンテンツがリソースであり、それらに url でアクセスできることを指定する必要がありますhttp://your-domain-name/context-name/images/image-name
。言うように、Spring は Grails よりもはるかに明示的です。
もう一つはテンプレートエンジンです。Library Sitemesh は、Spring を使用する場合によく使用される (Grails のデフォルトでもある) ため、大きな違いはありません (主に構文に関するものです)。テンプレート エンジンの主な目的は、HTML に動的データを「埋め込む」ことです。その一部を紹介します。
あなたの例を満たすチュートリアルを作成することは、回答の範囲を超えていることに注意してください。また、Spring は多くの関連するソリューションを有効にします。つまり、開発者によって組織/構成の方法が異なる場合があります。しかし、気持ちを伝えるために、簡単な例を作成します (この例を作成するために freemarker を使用しています)。
ファイル: common.ftl には、次のものがあります。
<#macro commonInclude>
<script type="text/javascript" src="${rc.getContextUrl('/js/jquery.js')}"></script>
<link rel="stylesheet" type="text/css" href="${rc.getContextUrl('css/main.css')}" />
</#macro>
もう少し設定を加えると、ビューファイルで次のように呼び出すことができます:
<@common.commonInclude />
そして、必要なコードをレンダリングします。
ご覧のとおり、主な違いは構文です。Grails はよりクリーンなスタイルを可能にしますが、Spring はより「明示的な」スタイルを提供します。これは、カスタマイズしたい場合に役立ちます。
- おまけ: の代替品をお探しの場合は
Grails layout
、「Spring and Sitemesh」で簡単に検索してください。