El diseñador de páginas web me ha dado HTML que se parece a:¿Cómo obtener la URL de un recurso compartido de Wicket?
<div .... style="background: transparent url(xxx.png) 170px center no-repeat">
Desafortunadamente el contenido de la imagen xxx.png
es generado por el software, por lo que he hecho un WebResource
y el uso de la siguiente estrategia para generar la dirección URL el recurso que luego incluyo en el atributo style=
usando un Wicket AttributeModifier
.
// App initialization code
String resourceName = ....;
getSharedResources().add(resourceName, myWebResource);
// Creating the widget
String url = getServletContext().getContextPath()
+ "/resources/org.apache.wicket.Application/" + resourceName ;
String style = "background: transparent url(" + url + ") 170px center no-repeat";
div.add(new AttributeModifier("style", new Model<String>(style)));
Esto funciona bien cuando lo pruebo localmente usando Eclipse, pero:
- Cuando instalo esto en la producción, yo quiero tener Apache como un proxy para espigón tal que el ISN raíz de contexto' t visible, es decir, Apache reenvía una solicitud de
/foo
a Jetty como/context-root/foo
. - En general, no creo que esto sea muy elegante. Estoy seguro de que estoy duplicando el código de Wicket aquí?
Entiendo que Wicket resuelve este problema de contexto y de proxys de Apache utilizando solo URL relativas. Esa sería la solución más elegante que sospecho. Pero si tengo, por ejemplo, a IndexedParamUrlCodingStrategy
, entonces la URL podría ser de longitud arbitraria y no sé cuántos ..
incluir para volver a /resources
.
Editar: La solución actual es utilizar URLs absolutos como en mi ejemplo el código de seguridad, y en Apache (a) reescribir /context-root/*
en /*
(b) como antes a continuación, añadir la raíz de contexto a todas las peticiones (c) hacia adelante a Jetty. De esta forma, la mayoría de las URL pueden estar sin la raíz de contexto, pero algunas URL (a mis recursos) pueden tener la raíz de contexto y está bien. ¡Pero no me gusta esta solución!
Esto no tiene' Responda la pregunta, pero podría simplificar un poco la última línea: 'nuevo SimpleAttributeModifier (" estilo ", estilo)' – Jonik
@Jonik, genial, ¡+1 gracias por la sugerencia! –