Веб-дизайнер предоставил мне HTML-код, который выглядит так:
<div .... style="background: transparent url(xxx.png) 170px center no-repeat">
К сожалению, содержимое изображения xxx.png
генерируется программного обеспечения, поэтому я сделал его WebResource
и использовал следующую стратегию для создания URL-адреса для ресурса, который затем вставляю в атрибут style =
с помощью 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)));
Это нормально работает, когда я тестирую его локально с помощью Eclipse, но:
/ foo
на Jetty как / context-root / foo
. Я понимаю, что Wicket решает эту проблему, связанную с контекстными корнями и проксированием Apache, только с помощью относительных URL-адресов. Я подозреваю, что это было бы наиболее элегантное решение. Но если у меня есть, например, IndexedParamUrlCodingStrategy
, тогда URL может быть произвольной длины, и я не знаю, сколько ..
включить, чтобы вернуться к / resources
.
Изменить : Текущее решение - использовать абсолютные URL-адреса, как в моем примере кода выше, и в Apache (a) переписать / context -root / *
в / *
(b) как и прежде, затем ДОБАВИТЬ корень контекста ко всем запросам (c), пересылаемым к Jetty. Таким образом, большинство URL-адресов могут быть без корневого контекста, но некоторые URL-адреса (к моим ресурсам) могут иметь корневой контекст, и это нормально. Но мне это решение не нравится!