Il web designer mi ha dato HTML che assomiglia a:Come ottenere l'URL per una risorsa condivisa di Wicket?
<div .... style="background: transparent url(xxx.png) 170px center no-repeat">
Purtroppo il contenuto dell'immagine xxx.png
viene generato dal software, così ho fatto un WebResource
e utilizzare la seguente strategia per generare l'URL per la risorsa che ho poi incorporato nell'attributo style=
utilizzando 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)));
Questo funziona bene quando prova a livello locale con Eclipse, ma:
- Quando si installa questo nella produzione, voglio avere Apache come proxy per pontile in modo tale che l'isn root di contesto' t visibile, cioè Apache inoltra una richiesta di
/foo
su Jetty come/context-root/foo
. - In generale, non penso che sia molto elegante. Sono sicuro che sto duplicando il codice Wicket qui?
Capisco che Wicket risolva questo problema di proxy di contesto e Apache utilizzando solo URL relativi. Questa sarebbe la soluzione più elegante che sospetto. Ma se ho per es. a IndexedParamUrlCodingStrategy
quindi l'URL potrebbe essere di lunghezza arbitraria e non so quanti ..
da includere per tornare a /resources
.
Edit: La soluzione attuale è quella di utilizzare URL assoluti come nel mio esempio codice di cui sopra, e in Apache (a) riscrivere /context-root/*
in /*
(b) come prima quindi aggiungere il root di contesto a tutte le richieste (c) in avanti al molo. In questo modo la maggior parte degli URL può essere senza la root di contesto ma alcuni URL (alle mie risorse) possono avere la root di contesto ed è OK. Ma non mi piace questa soluzione!
Questo doesn' t rispondere alla domanda, ma potresti semplificare un po 'l'ultima riga: 'new SimpleAttributeModifier (" style ", style)' – Jonik
@Jonik, ottimo, +1 grazie per il suggerimento! –