2012-09-16 9 views

Odpowiedz

16

składnia:

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

Przez analogię można również generować adresy w kontrolerach. to znaczy. przekierowania po jakiejś akcji:

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, tak proste jak @{routes.Application.show("tag")}.

4

Format umieszczenie URL z pliku routes w html jest następująca:

@routes.NameOfYourClass.nameOfyourMethod() 

Tak więc, jeśli w pliku routes mieć:

GET  /products     controllers.Products.index() 

Twoja klasa Products wygląda następująco:

public class Products extends Controller { 

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

Twój <a> powinna wyglądać następująco:

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

Ponadto: Jeśli metoda może przyjmować parametry, a następnie można oczywiście przekazać je pomiędzy brać w nawias swojego sposobu jak ten: index("Hi").

Mam nadzieję, że ta odpowiedź będzie bardziej zrozumiała.

+2

co, jeśli mój kontroler jest w pakietach podrzędnych? załóżmy, że jest w 'com.mycompany.myproduct.controllers.LoginController.index()' – Zennichimaro

1

Zaakceptowanych odpowiedź jest dobra, ale nie obejmuje przypadek, w którym kontroler jest w sub-pakietu, tj: controllers.applications.MyFavouriteApplication.show()

Ponieważ miałem trudności ze znalezieniem odpowiedzi, będę go zakładać tutaj.

Aby umieścić non-scoped odnośnik do szablonu, właściwy wzór jest @controllers.{sub-packages if any}.routes.{your class}.{your method}()

Więc w tym przypadku byłoby @controllers.applications.routes.MyFavouriteApplication.show()

przypadku używania zalecanego Odtwórz wzorzec używania @Inject stworzyć singleton obiekty kontrolera, a jeśli myśli prawidłowa odpowiedź była @controllers.applications.MyFavouriteApplication.show(), to pojawi się błąd jak poniżej:

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

Biorąc pod uwagę, że już dostarczyłeś adnotację @Inject()@Singleton, wydaje się to naprawdę bardzo dziwnym błędem. Może to sprawić, że zapytasz, czy prawidłowo budowałeś projekt. Ustalenie prawdziwej przyczyny może kosztować cię znacznie we krwi i skarbie.

Powiązane problemy