2012-03-13 13 views
0

このページからのリンクを作成したいのですが、詳細ページに移動します しかし、私は404エラーを受け取ります。テーブル内のアイテムのリストからリンクを作成する方法

Here is the gsp: 
<%@ page import="tictoc.Store" %> 
    <!doctype html> 
    <html> 
     <head> 
      <meta name="layout" content="main"> 
      <g:set var="entityName" value="${message(code: 'store.label', default: 'Store')}" /> 
      <title><g:message code="default.show.label" args="[entityName]" /></title> 
     </head> 
     <body> 

      <h1> Ticket Store </h1> 
      <div> 
       <table border=0 class="eventsTable"> 
        <tr> 

         <th>Event</th> 
         <th>Start </th> 
         <th>End </th> 
         <th>Description</th> 
        </tr> 

        <g:each var="event" in="${events}"> 

        <tr> 
         <td><g:link action="display" controller="store" id="${event.id}"> 
          ${event.name} 
          </g:link> 
         </td> 
         <td><g:formatDate format="MM/dd/yyyy" date="${event.startDate}"/></td> 
         <td><g:formatDate format="MM/dd/yyyy" date="${event.endDate}"/></td> 
         <td>${event.desc}</td> 
        </tr> 

        </g:each> 

       </table> 

      </div> 
      <div class="paginateButtons"> 
       <g:paginate controller="store" 
        action="show" 
        max="5" 
        params="[name:active]" 
        total="${totalEvents}" /> 
      </div> 
     </body> 
    </html> 

これはコントローラであり、私は表示されないbuy.gspというGSPを持っています。ここで

 
     package tictoc

import tictoc.Event 

    class StoreController { 

     Event event 
     static defaultAction = "activeEvents" 

     def show = { 
      log.error 'exec activeEvents' 
      activeEvents() 
     } 

     def activeEvents = { 
      log.error 'exec activeEvents' 
      params.max = Math.min(params.int('max', 5), 100); 
      params.offset = params.int('offset', 0) 
      params.total = Event.count() 
      params.sort = params.sort ?: "name"; 
      params.order = params.order ?: "asc"; 

      // def max = Math.min(params.int('max', 5), 100); 
      // def offset = params.offset?.toInteger() ?: 0 
      // def total = Event.count() 
      def eventList = Event.list(max: params.max, offset: params.offset) 

      return [events:eventList, 
        totalEvents:params.total, 
        active:params.active]     
     } 

     def detail = { 
      log.error 'exec detail' 
      def eventId = params.id 
      log.error 'eventId:' + eventId 
      render(view: "buy", model: [event: eventId]) 
     } 

     def list = { 
      params.max = Math.min(params.int('max', 25), 100); 
      params.offset = params.int('offset', 0) 
      params.sort = params.sort ?: "name"; 
      params.order = params.order ?: "asc"; 
      return [ myList: DomainObject.list(params) ] 
     } 


     def display = { 
      println "display..........." 
      def event = Event.findById(params.id) 
      if(event) { 
       println "EVENT IS $event" 
       render(view:"buy", model:[event:event]) 
      } 
      else { 
       response.sendError 404 
      } 
     } 
    } 

は、URLマッピングです:

class UrlMappings { static mappings = { "/"(controller:"store", action:'show') } }
+0

UrlMappingも表示できますか? –

+0

done ............. – user1260085

答えて

0

一つだけ指定されたコントローラをマッピングされたとことで、正確なURLにアクションを指定しているので、あなたは、URL /store/display/6ための任意のマッピングを持っていない:あなたはdiplayをマップする必要がある場合は

mappings = { "/"(controller:"store", action:'show') } 

、あなたは返す必要が(可能な削除)マッピング:

class UrlMappings { 

    static mappings = { 
     "/$controller/$action?/$id?"{ 
      constraints { 
       // apply constraints here 
      } 
     } 
     "/"(controller:"store", action:'show') 
    } 
} 

あなたはまた、より多くの仕様を提供することができますhttp://grails.org/doc/latest/guide/theWebLayer.html#urlmappings

+0

このアプリケーションに追加するすべてのアクションをこのマッピングのものに追加する必要があります。例:静的マッピング= { "/ $ controller/$ action?/ $ id?" { 制約{ //ここに制約を適用します } } "/"(コントローラ: "ストア"、アクション: 'ショー') "/"(コントローラ: "ユーザー"、アクション: 'ログイン') } – user1260085

+0

パターン '/ $制御/ $アクション?/ $ id? 'はほとんどの標準的なアクションで動作するので、特定のものがある場合にのみ独自のマッピングが必要です –

0

あなたはEvent.findById(params.id)Event.get(params.id)

を変更してみてくださいあなたのイベントがnullであるようです。

+0

同じエラー: タイプステータスレポート メッセージ/ tictoc/store/display/6 説明要求されたリソース(/ tictoc/store/display/6)は、利用可能です。 – user1260085

0

でURLマッピングについての詳細を読むことができますこのようなマッピング:

class UrlMappings { 

    static mappings = { 
     "/displayEvent/$id"(controller: 'store', action: 'display') 
     "/"(controller:"store", action:'show') 
    } 
} 
+0

これは私が探していたものです...そのマッピングファイルはすべてのページを順番に追加する必要がありますページをレンダリングするには? – user1260085

関連する問題