2008-10-13 33 views
27

Cách thích hợp để điền mô hình cho trang chỉ mục trong ứng dụng grails là gì? Không có IndexController theo mặc định, là có một số cơ chế khác để có được danh sách này và vào trong mô hình?Thực hành tốt nhất cho trang chỉ mục grails

Trả lời

36

Tôi sẽ không cho rằng đây là cách phù hợp, nhưng đó là một cách để bắt đầu mọi thứ. Nó không mất nhiều để có một bộ điều khiển được mặc định. Thêm một bản đồ để UrlMappings.groovy:

class UrlMappings { 
    static mappings = { 
     "/$controller/$action?/$id?"{ 
      constraints { 
       // apply constraints here 
      } 
     } 
     "500"(view:'/error') 
    "/" 
     { 
      controller = "quote" 
     } 
    } 
} 

Sau đó, thêm một hành động chỉ số để điều khiển tại mặc định:

class QuoteController { 

    def index = { 
     ... 
    } 
} 

Nếu những gì bạn muốn tải đã là một phần của hành động khác chỉ cần chuyển hướng:

def index = { 
    redirect(action: random) 
} 

Hoặc để thực sự có được một số tái sử dụng đi, đặt logic trong một dịch vụ:

class QuoteController { 

    def quoteService 

    def index = { 
     redirect(action: random) 
    } 

    def random = { 
     def randomQuote = quoteService.getRandomQuote() 
     [ quote : randomQuote ] 
    } 
} 
+2

Tôi nghĩ rằng UrlMappings có lẽ đã đọc ' "/"{controller: "quote"}'. Nó không làm việc cho tôi cho đến khi tôi thay đổi "=" thành ":". –

+0

'static defaultAction =" random "' - thay vì chuyển hướng từ hành động index bạn có thể thêm trường staticAction tĩnh vào controller với tên hành động mong muốn làm giá trị. – topr

4

Câu trả lời hay: Nếu bạn cần tạo mô hình cho trang chỉ mục, đã đến lúc phải thay đổi từ việc sử dụng chỉ mục thẳng.gsp sang bộ điều khiển chỉ mục.

Câu trả lời độc ác: Nếu bạn tạo bộ lọc có bộ điều khiển là '*', bộ lọc sẽ được thực thi ngay cả đối với các trang tĩnh.

19

Tôi không thể lấy ví dụ của Ed T ở trên để hoạt động. Có lẽ Grails đã thay đổi kể từ đó?

Sau một số thử nghiệm và một số lục lọi trên mạng, tôi đã kết thúc với điều này trong UrlMappings.groovy:

"/"(controller: 'home', action: 'index') 

HomeController của tôi trông như thế này:

class HomeController { 

    def index = { 
    def quotes = = latest(Quote.list(), 5) 
    ["quotes": quotes, "totalQuotes": Quote.count()] 
    } 

} 

Và trong , tôi có một index.gsp tập tin. Điều đó làm cho tệp index.gsp trong chế độ xem không cần thiết, vì vậy tôi đã xóa tệp đó.

0

Trong grails 1.3.6 chỉ thêm

"/index.gsp"(uri:"/")

để UrlMappings.groovy làm việc tốt cho tôi. Nó có tác dụng tương tự như thêm một bộ điều khiển mới và ánh xạ như được mô tả trước đây.

Dưới đây là UrlMappings.groovy hoàn chỉnh của tôi:

class UrlMappings { 

    static mappings = { 
     "/$controller/$action?/$id?"{ 
      constraints { 
       // apply constraints here 
      } 
     } 

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

     "/index.gsp"(uri:"/") 
    } 
} 
+1

Chuyển hướng với uri có hoạt động trong UrlMappings không? Tôi đã thử nó (cho một usecase hơi khác nhau), và nó đã không. Đã xảy ra lỗi khi bộ điều khiển bị vô hiệu. Tôi đã phải nghỉ mát để chuyển hướng từ một bộ điều khiển. – mcv

Các vấn đề liên quan