2013-06-09 16 views
13

Tôi đang sử dụng Play 2.1 và tôi đang gặp một số sự cố lạ.Tuyến và gói phụ trong bộ điều khiển

Tôi có một gói phụ messages trong gói controllers với lớp i18n.java.

tập tin routes của tôi trông như thế này:

GET  \ controllers.messages.i18n.index() 
POST \ controllers.messages.i18n.process() 

bây giờ tôi có một hình thức với hành động sau đây:

@helper.form(action = routes.messages.i18n.process()) 

nhưng điều này mang lại cho tôi một lỗi:

value messages is not a member of object controllers.routes

Tôi đã sử dụng các gói con trước đó trong Play 2.0.4 và nó đã sử dụng orked tốt như thế, bất cứ ai có thể phát hiện bất kỳ lỗi nào trong cấu hình của tôi?

Tệp tuyến đường không phàn nàn rằng nó không thể tìm thấy bộ điều khiển.

Trả lời

18

Tuyến đường phải là controllers.messages.routes.i18n.process(). Bạn có thể kiểm tra thư mục target/scala-2.10/src_managed để khám phá các tệp đã tạo.

Và để biết thông tin, quy ước mã hóa Java nói rằng một lớp phải bắt đầu bằng chữ hoa.

+0

Tên lớp là một sao chép/dán/chỉnh sửa thất bại, nhưng công trình này! Cảm ơn bạn đã gợi ý 'src_managed' – Aerus

10

FYI, trong 2.2, hơi khác một chút.

routes.conf trông giống như:

GET /admin/stuff controllers.admin.StuffController.show() 

trong mã trông giống như:

controllers.admin.routes.StuffController.show() 
3

Đối Chơi 2.4.6 người dùng Java:

Hãy nói rằng điều khiển của bạn (ứng dụng) và hành động (đăng xuất) là com.stackoverflow.play.Application.logout().

Để sử dụng nó trong mẫu của bạn (*.scala.html), bạn làm @com.stackoverflow.play.routes.Application.logout (ví dụ, <a href="@com.stackoverflow.play.routes.Application.logout()">, <form action="@com.stackoverflow.play.routes.Application.logout()" method="post">).

Đọc phần dưới cùng của liên kết này: https://playframework.com/documentation/2.4.x/JavaRouting