2011-09-08 7 views
7

Al principio tuve enlace en twitter icon:¿Cómo invierto la ruta inversa de un archivo estático?

@{'/public/images/twitter-icon.png'/} 

Pero ahora quiero mostrar un icono de Twitter-, Facebook- o LinkedIn dependiendo del tipo. Por lo tanto, he creado un FastTag que toma el tipo como un parámetro y el código es el siguiente:

In the view: 
#{myApp.icon contact.type/} 

FastTag Java Code: 
String type = (String) args.get("arg"); 
out.print("/public/images/" + type + "-icon.png"); 

Trabaja muy bien. Sin embargo, en nuestro servidor de compilación se corre la aplicación con un prefijo en el URI como esta

http://ourdomain.com/appname/... 

Obviamente// imágenes públicas ... no va a funcionar aquí. Así que pensé que tenía que pedirle al enrutador la dirección correcta. He intentado lo siguiente sin éxito:

Router.reverse("/public/images/" + type + "-icon.png"); 
Router.reverse("/public/"); 
Router.reverse("staticDir:public"); 

Los tres dan como resultado una NoRouteFoundException. ¿Cómo puedo obtener la ruta correcta para mis iconos?

En las rutas de archivo que tengo la ruta por defecto para archivos estáticos

GET  /public/  staticDir:public 

Respuesta

9

Creo que esto es lo que quiere:

String imageUrl = Router.reverse(VirtualFile.fromRelativePath("public/images/" + type + "-icon.png")); 
0

Router.reverse ser utilizados generar URL forma una acción! tal vez usted puede definir una ruta que incluyen el nombre de la aplicación y la ruta de una acción, por ejemplo:

GET/nombreaplic/public/TestController.test

ahora, puede utilizar

Router.reverse ("TestController .test ")

obtener la URL.

+0

alguna posibilidad de que podría intentar ampliar esta respuesta un poco? Realmente no dice nada de uso en este momento:/ – obfuscation

0

creo que es mejor que hacer algo como:

GET  /img/  staticDir:public/images 

Y en la plantilla simplemente:

out.print("/img/" + type + "-icon.png"); 
+0

Eso no funcionará en nuestro caso en el que tenemos juegos que se ejecutan en una url como esta: http://ourdomain.com/appname/img/ -icon.png . Usted no obtiene/appname/img/ -icon.png just/img/ -icon.png –

Cuestiones relacionadas