2008-08-26 38 views

Trả lời

10

Chỉnh sửa UrlMappings.groovy

Thêm ví dụ, thêm quy tắc này, để xử lý gốc bằng HomeController.

"/" (điều khiển: 'nhà')

+1

làm việc cho tôi, dưới grails 1.3.7, với một hành động: chìa khóa. – jerseyboy

53

Thêm này trong UrlMappings.groovy

 
"/" { 
    controller = "yourController" 
    action = "yourAction" 
} 

Bằng cách cấu hình URLMappings cách này, các nhà trang của ứng dụng sẽ yourWebApp/yourController /Hành động của bạn.

(cắt/dán từ IntelliGrape Blog)

+0

Có lẽ phương pháp đã thay đổi trong các phiên bản tiếp theo của Grails, bởi vì nó không hoạt động trên 1.3.7. Sử dụng cú pháp được đăng bởi daherman đã làm việc cho tôi. – jerseyboy

+2

Nó sẽ hoạt động, theo [tài liệu chính thức] (https://grails.github.io/grails-doc/1.3.7/guide/single.html#6.4.1%20Mapping%20to%20Controllers%20and%20Actions) nhưng hãy nhớ sử dụng tên viết tắt cho bộ điều khiển của bạn - tức là nếu lớp điều khiển của bạn là BooksController, thì bạn chỉ gọi nó là "sách". – Wonko

2

Đơn giản và gọn gàng

  1. Go to File: grails-app/conf/UrlMappings.groovy.

  2. Thay thế dòng: "/" (xem: "/ chỉ mục") bằng "/" (bộ điều khiển: 'home', action: "/ index").

Trang chủ là bộ điều khiển để chạy (như bảo mật mùa xuân bạn có thể sử dụng 'đăng nhập') và hành động là trang xem grails liên kết với bộ điều khiển của bạn (Trong bảo mật mùa xuân '/ auth').

Thêm chuyển hướng các trang theo nhu cầu ứng dụng của bạn.

11

Bạn có thể thử như sau
trong lớp UrlMappings.groovy đó là bên trong thư mục cấu hình:

class UrlMappings { 

    static mappings = { 

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

     //"/"(view:"/index") 
     "/" (controller:'Item', action:'index') // Here i have changed the desired action to show the desired page while running the application 
     "500"(view:'/error') 
    } 
} 

hy vọng điều này giúp,
Rubel

0

Tất cả các câu trả lời là chính xác! Nhưng hãy tưởng tượng một trường hợp:

Tôi ánh xạ đường dẫn "/" với bộ điều khiển: "Home" và hành động: "index", vì vậy khi tôi truy cập "/ app-name /" tôi gõ đường dẫn "/ app-name/home/index", nó vẫn sẽ được thực hiện! do đó, có 2 đường dẫn cho một tài nguyên. nó sẽ hoạt động cho đến khi một số phát hiện ra đường dẫn "home/index".

một điều nữa là nếu tôi có biểu mẫu mà không có bất kỳ thuộc tính hành động nào được chỉ định, do đó theo mặc định, nó sẽ được BẬT cho cùng một bộ điều khiển và hành động! vì vậy nếu biểu mẫu được ánh xạ tới đường dẫn "/" và không có thuộc tính action nào được chỉ định thì nó sẽ được gửi đến cùng một bộ điều khiển, nhưng lần này đường dẫn sẽ là "home/index" trong thanh địa chỉ của bạn chứ không phải "/", bởi vì nó đang được gửi tới bộ điều khiển/hành động chứ không phải cho URI.

Để giải quyết vấn đề này những gì bạn phải làm, là xóa hoặc nhận xét những dòng này.

//  "/$controller/$action?/$id?(.$format)?"{ 
//   constraints { 
//    // apply constraints here 
//   } 
//  } 

Vì vậy, bây giờ khi bạn truy cập "/", sẽ hoạt động. nhưng "nhà/chỉ mục" sẽ không.Nhưng có một lỗ hổng, bây giờ bạn phải ánh xạ tất cả các đường dẫn đến các bộ điều khiển bằng tay bằng cách viết rõ ràng vào tệp URLMapping. Tôi đoán điều này sẽ giúp!

2

Sử dụng bộ điều khiển, xem và tham số hành động của các cú pháp sau:

class UrlMappings { 
    static mappings = { 
     "/" (controller:'dashboard', view: 'index', action: 'index') 
     "500"(view:'/error') 
    } 
} 
Các vấn đề liên quan