2012-09-16 31 views

Trả lời

16

cú pháp:

<a href='@routes.Application.show("some")'>My link with some string</a> 

Bằng cách tương tự bạn cũng có thể tạo ra các url trong bộ điều khiển của bạn. I E. cho chuyển hướng sau khi một số hành động:

public static Result justRedirect(){ 

    // use as String 
    String urlOfShow = routes.Application.index().toString(). 

    // or pass as a redirect() arg 
    return redirect(routes.Application.show("some")); 
} 
3

Ah, đơn giản như @{routes.Application.show("tag")}.

4

Định dạng cho đặt một URL từ tập tin routes của bạn trong html của bạn là như sau:

@routes.NameOfYourClass.nameOfyourMethod() 

Vì vậy, nếu trong file routes của bạn, bạn có:

GET  /products     controllers.Products.index() 

Và lớp học Products của bạn trông giống như sau:

public class Products extends Controller { 

    public Result index() { 
     return ok(views.html.index.render()); 
    } 
} 

<a> của bạn sẽ trông như thế này:

<a href="@routes.Products.index()">Products</a> 

Ngoài: Nếu phương pháp của bạn có thể chấp nhận các thông số, sau đó bạn có thể tất nhiên vượt qua họ ở giữa nghĩ giải lao của phương pháp của bạn như thế này: index("Hi").

Tôi hy vọng câu trả lời này sẽ dễ hiểu hơn.

+2

nếu Bộ điều khiển của tôi nằm trong các gói phụ? giả sử nó nằm trong 'com.mycompany.myproduct.controllers.LoginController.index()' – Zennichimaro

1

Câu trả lời được chấp nhận là đúng, nhưng nó không bao gồm các trường hợp điều khiển nằm trong một tiểu gói, ví dụ: controllers.applications.MyFavouriteApplication.show()

Kể từ khi tôi đã có một thời gian khó khăn để tìm câu trả lời, tôi sẽ đăng nó đây.

Để đưa một liên kết không đặt phạm vi thành một mẫu, mô hình thích hợp là @controllers.{sub-packages if any}.routes.{your class}.{your method}()

Vì vậy, trong trường hợp này nó sẽ là @controllers.applications.routes.MyFavouriteApplication.show()

NẾU bạn đang sử dụng các mô hình khuyến khích chơi của việc sử dụng @Inject để tạo singleton đối tượng điều khiển, và NẾU bạn nghĩ câu trả lời đúng là @controllers.applications.MyFavouriteApplication.show(), bạn sẽ nhận được một lỗi như thế này:

Object MyFavouriteApplication is not a member of controllers.applications. Note: class MyFavouriteApplication exists, but it has no companion object.

Vì bạn đã cung cấp chú thích @Inject()@Singleton, điều này có vẻ như là một lỗi rất lạ. Nó có thể làm cho bạn đặt câu hỏi nếu bạn đang xây dựng dự án một cách chính xác. Xác định nguyên nhân thực sự có thể khiến bạn đáng kể trong máu và kho báu.

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