2012-04-04 36 views
13

Tôi đang cố gắng tìm ra cách thực hiện chuyển hướng trong một hành động điều khiển trong Play (2.0) bằng Scala.Play Framework - Chuyển hướng với params

Các chuyển hướng sử dụng

Redirect(routes.Application.index) 

công trình tốt.

Điều tôi không thể tìm ra từ tài liệu, API hoặc Google là cách thêm thông số vào cuộc gọi.

Tôi đến từ Grails nơi này có thể được thực hiện một cách dễ dàng như sau:

chuyển hướng hành động: "chỉ số", params: [ "key": "giá trị"] .

Cách duy nhất tôi tìm thấy là gọi Chuyển hướng bằng url chuỗi và chuỗi truy vấn, có vẻ khó xử.

Về cơ bản tôi muốn sử dụng Chuyển hướng (Gọi) bằng cách nào đó, nhưng tôi không làm cách nào để tạo đối tượng Cuộc gọi bằng cách sử dụng định tuyến ngược.

Tôi có thiếu thứ gì đó/không nhận được khái niệm trong Play/Scala không?

Cảm ơn bạn đã nâng cao!

Trả lời

15

Ellou'

Một tuyến đường chỉ là một chức năng, vì vậy bạn có thể vượt qua đối số như bình thường:

// Redirect to /hello/Bob 
def helloBob = Action { 
    Redirect(routes.Application.hello("Bob"))  
} 

đoạn này xuất phát từ http://www.playframework.org/documentation/2.0/ScalaRouting (ở phía dưới)

+0

Cảm ơn! Trên thực tế, tôi đã thử điều này ở nơi đầu tiên, nhưng trình biên dịch phàn nàn, rằng tôi đã nhập quá nhiều đối số. Vấn đề là: hành động mất một Long, nhưng trong định tuyến tôi định nghĩa, rằng cần có một giá trị mặc định cho hành động. Tôi phải loại bỏ nó. Vì vậy, bây giờ tôi cần phải gọi một trong hai chỉ số (Không) hoặc chỉ số (Một số (foo)). Đến từ Grails, điều này có vẻ rất tẻ nhạt. – pchronz

+3

+1 Đây là tất cả các URL an toàn loại. Tôi muốn chơi sẽ bán chúng nhiều hơn cho những gì họ đang có. –

+1

+1 dành cho loại an toàn, @DanBurton, thanx để chỉnh sửa – biesior

0

Bạn cũng có thể tránh được tạo một chức năng khác cho điều này trong bộ điều khiển của bạn. Trong cấu hình tuyến đường của bạn, bạn có thể chỉ cần thêm một cái gì đó như thế này:

GET /google @controllers.Default.redirect(to = "http://google.com") 
+0

@zenith: hy vọng nó sẽ giúp –

+0

Muuuuch tốt hơn! – emlai

+0

Điều này dường như không hoạt động. Tôi nhận được 'Không có tập tin hoặc thư mục như vậy' –

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