2012-01-19 16 views
0

Grailsのアプリケーションを維持している経験があります。現在、「タスク管理」アプリケーションを作成しています。GrailsのGSPとコントローラ

は明らかURLMappings.groovy例からこのスニペットによって証明されるように、ビューをレンダリングController actionsGroovy Server Pagesのビュー二分法がある:

ユーザに面するURLがいずれかのビューにマッピングされなければならない
static mappings = { 

    // .. 

    "/" (view:'/index') 
    "/login/$action?" (controller: 'login') 
    "/logout/$action?" (controller: 'logout') 

    "500" (view:'/error') 
} 

(のGSP)またはビューをレンダリングするコントローラ、例えば:

class LoginController { 

    /** 
    * Show the login page. 
    */ 
    def auth = { 

     // .. auth logic 

     String view = 'auth' 
     String postUrl = "${request.contextPath}${config.apf.filterProcessesUrl}" 
     render view: view, model: [postUrl: postUrl, rememberMeParameter: config.rememberMe.parameter] 
    } 

} 

設計の観点から、どのように私はどの方法が使用することを選ぶのですか? HTMLを出力する典型的なサーバページのようなGSP/taglibを使ってビューを作成するのはいつですか?また、URLをデリゲートGSPをレンダリングするコントローラにマップするのはいつですか?両方のアプローチを組み合わせることはできますか?私はここでオプションを単純化していますか?

答えて

3

あなたの質問に関連して、hvgotcodesが言ったことに加えて、GSPビューに直接マップしたいのは、そのビューが事実上「静的」であるときだけです。

静的とは、ビューをレンダリングするためのデータベースや実際の計算に依存していないことを意味します。一般的な要素を扱うためのタグライブラリや、ページの上部にある「ようこそユーザー」のようなものを使用しているという点で、依然として動的である可能性があります。

ユーザー入力の処理、データベース情報の参照、複雑なURLの管理、計算の追加を行うとすぐに、コントローラを使用する必要があります。

最終的な目標は、GSPには視覚的情報とレイアウト情報だけでなく、時折静的なテキストブロックが含まれていることです。しかし、コードを混乱させるため、常にがメンテナンスの頭痛につながるので、GSPにロジックを混在させないようにしてください。タグライブラリに関する


編集:

私は以下の書いたように:

タグライブラリは、要素をループ、またはの可視性をトグルのように、ビューに接続された任意のロジックのためのものです何か。 GSPに直接コードを書こうとするのであれば、たぶんタグライブラリに入れるべきでしょう。もちろん、ワンオフの例外は常にあります。あなたのビューでロジックのコードを持っている場合

だから、 特には、タグライブラリに配置する必要があり、視覚やレイアウト内容に関すること。良い例では、ユーザーがログインしている場合、要素の可視性を切り替えるために使用することができます春のセキュリティ・コア、から <sec:ifLoggedIn>タグである。これは、そのようにそれを手動で書くよりもはるかに優れています:。

<sec:ifLoggedIn>blah blah</sec:ifLoggedIn> 
<g:if test="${session.user?.loggedIn}">blah blah</g:if> 

それので、目的をより明確にし(タイトルによって)、論理を抽象化するので、後で何かの仕方を変える必要がある場合は、一箇所で変更するだけです。


TL; DR:

  • のGSP - 簡易 "静的" コンテンツ
  • タグ - 再利用可能な動的コンポーネント具体ビジュアル又はレイアウトコンテンツの
  • コントローラ/用のGSP - 動的コンテンツ
+0

非常に役に立ちます。タグ・ライブラリがどのような役割を果たすべきだと思いますか? – paislee

+0

タグライブラリは、要素にループを張る、または何かの可視性を切り替えるなど、ビューに接続されているロジック用です。 GSPに直接コードを書こうとするのであれば、たぶんタグライブラリに入れるべきでしょう。もちろん、ワンオフの例外は常にあります。多分私は上記の答えにこれを追加します... – OverZealous

1

私はそれが二分法だとは思わない。 GSPとコントローラのアクションは連携して機能し、コントローラはデータをロードして適切なGSPにそのデータを渡す準備をします。

URLマッピングの内容は、データの読み込みとデータの表示(表示されている)とどのように作用するのかとは違う、GrailsのGrails規約を壊したい場合です。

唯一の時間(IMHO)は、プロジェクトコードの開発者が一貫して機能しないときの二分法です。即ち、確実に2分法の出現を与えることが可能である。

関連する問題