2012-09-16 23 views

Respuesta

16

sintaxis:

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

Por analogía también se puede generar URL en sus controladores. es decir. para redireccionar después de algún tipo de acción:

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, tan simple como @{routes.Application.show("tag")}.

4

El formato para poner una dirección URL de su archivo routes en su html es el siguiente:

@routes.NameOfYourClass.nameOfyourMethod() 

lo tanto, si en su archivo routes tiene:

GET  /products     controllers.Products.index() 

Y tu clase Products se parece a esto:

public class Products extends Controller { 

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

Su <a> debería tener este aspecto:

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

Además: Si su método puede aceptar parámetros, entonces por supuesto puede pasar en poner entre paréntesis entre el método de la siguiente manera: index("Hi").

Espero que esta respuesta sea más clara de entender.

+2

¿Qué pasa si mi controlador está en paquetes secundarios? digamos que está en 'com.mycompany.myproduct.controllers.LoginController.index()' – Zennichimaro

1

La respuesta aceptada es correcta, pero no cubre el caso en el que el controlador está en un sub-paquete, es decir: controllers.applications.MyFavouriteApplication.show()

Ya que tenía un tiempo difícil encontrar la respuesta, voy a publicar aquí.

poner un enlace no restringidos en una plantilla, el patrón adecuado es @controllers.{sub-packages if any}.routes.{your class}.{your method}()

Así que en este caso sería @controllers.applications.routes.MyFavouriteApplication.show()

si estuviera usando el patrón recomendado Juego de utilizar @Inject para crear Singleton objetos del controlador, y si usted pensó que la respuesta correcta era @controllers.applications.MyFavouriteApplication.show(), se llega a un error como este:

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

Dado que ya ha proporcionado la anotación @Inject()@Singleton, esto parecería un error muy extraño. Puede hacer que te preguntes si estabas construyendo el proyecto correctamente. Determinar la verdadera causa podría costarle mucho en sangre y tesoros.

Cuestiones relacionadas