1

ユーザーが2つの方法(サムネイルとリストなど)で地図を閲覧できるアプリケーションがあります

/map/browse
/map/list

ここで、これらのビューを特定のユーザーの地図のみを表示するように制限したいと思います。

/user/3/browse
/user/3/list

そこで、マッピングを作成しました。

"/user/$userId/browse" {
  controller = "map"
  action = "browse"
}

"/user/$userId/list" {
  controller = "map"
  action = "list"
}

これで、に移動でき/user/3/browseますが、ページ付けリンクをクリックするか、ページ付けフィルターを変更すると、URLはに戻ります/map/browse

また、コントローラーでをに設定すると、次のエラーが発生しますuserIdnull

エラー500:GroovyPageViewの処理中にエラーが発生しました:タグの実行中にエラーが発生しました:マッピング[/ user /(*)/ list]およびパラメーター[["action": "list"、 "controller": "map"、 "max" :20、 "offset":0、 "sort": "uploadDate"、 "order": "desc"、 "userId":null、 "totalMaps":30]]。パラメータ[userId]は必須ですが、指定されていません!/views/map/browse.gsp:26で

ページネーションは次のように機能します。

<div class="paginateButtons">
    <g:paginate controller="map" action="browse" total="${mapInstanceTotal}"></g:paginate>
</div>

それに対して何ができますか、または私が望むものを実装する正しい方法は何でしょうか?

私は必ずしもそのURLマッピングを持っている必要はありません、私は言うための良い方法だけが必要です:「1人のユーザーだけの地図を表示する」

4

1 に答える 1

4

It seems that the problem is not at your URL mapping configuration ,but in your way to create link. I think it's better if you use Named URL Mapping : it's clearer than your approach now, and when create link for pagination you only need to specify the url name. For example:

In UrlMappings.groovy:

static mappings = {

    name accountDetails: "/details/$acctNumber" {
        controller = 'product'
        action = 'accountDetails'
    }
}

In view - gsp page:

<g:link mapping="accountDetails" params="[acctNumber:'8675309']">
    Show Account
</g:link>
于 2011-05-10T08:52:56.327 に答える