2011-08-02 9 views
0

URI/admin/article/indexが指定されていると、なぜこのURLマッピングは機能しませんか?一致するブロックのUrlMapping :: View属性が無視されます

"/admin/$controller/$action?/$id?"{ 
     view = "/admin/index" // no dice, ignored 
     //action = "foo" // uncommented, this is picked up 
} 

すべての管理コントローラは、デフォルトで管理ビューを使用するために私がしたい(と各コントローラの各アクションのビューをレンダリングする必要はありません)。 "/ account/$ controller/..."と共通のビューを使用する他のサイトモジュールでも同じです。

はおそらく、あなたが書いたものとは非常に異なる何かをしようとしているように

答えて

1

が見える...そこにこれを達成するための別の方法ですが、UrlMappingsはそれを行うための場所であると仮定しました。

あなたは既にベースURLマッピングでマッピングされたactionを持っている、とビューが自動的にcontrollerに基づいて選択されているので、あなたは、コントローラを持っていないこれらのビューのためにdefine different mappingsに必要な、とされている項目に対してはさらに別のマッピングデフォルト動作はfooです。コントローラのデフォルト動作はindexです。コントローラを指定せずにデフォルトの動作を指定する必要は通常ありません。

私はあなたが一般的に、MVCフレームワークの仕組みを誤解していると思います。コントローラは何もレンダリングしてはならず、ビューはコントローラ/アクションに固有でなければなりません。 コントローラーが同じビューをレンダリングしている場合は、コントローラーがHTMLをレンダリングしているか、ビューがあまりにも複雑になっている可能性があります。

Layouts with SiteMeshを参照すると、デフォルトのテンプレート構造を作成してから、特定のコンテンツをビューで変更できるようになります。

+0

ありがとうございます。fooアクションは何もしません。実際にurlmappingブロックが実際に一致したことを確認するだけです。はい、私がしようとしているのは、MVCの穀粒に逆らっています。/adminの下にあるすべてのコントローラは全く同じビューを使用するので、controller to action.gspの規約を満たすために、重複したビューを作成するのは意味がないようです。管理画面はまったく同じです(ダッシュボード、パンくずリスト、オートコンプリート検索など)。唯一の変化するコンテンツはフォームそのものです。私はadminレイアウトの管理者ビューおそらく、これは間違ったアプローチであり、視点から始めるだけです。 – virtualeyes

+0

はい、それはすべてのレイアウトのためのものです。最後のリンクを参照してください。 – OverZealous

+0

もちろん、レイアウトはまったく同じですが、コントローラごとに、view-action.gsp(またはコントローラごとのアクションレンダリング管理テンプレート)を定義する必要がありますが、コントローラーフォームのコンテンツです。 – virtualeyes

関連する問題