Как получить URL-адрес общего ресурса Wicket?

Веб-дизайнер предоставил мне 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, но:

  • Когда я устанавливаю это в производственной среде, я хочу иметь Apache в качестве прокси для Jetty, чтобы корень контекста не был виден, т.е. Apache перенаправляет запрос / foo на Jetty как / context-root / foo .
  • В общем, я не думаю, что это очень элегантно. Я' Уверен, что я дублирую здесь код Wicket?

Я понимаю, что Wicket решает эту проблему, связанную с контекстными корнями и проксированием Apache, только с помощью относительных URL-адресов. Я подозреваю, что это было бы наиболее элегантное решение. Но если у меня есть, например, IndexedParamUrlCodingStrategy , тогда URL может быть произвольной длины, и я не знаю, сколько .. включить, чтобы вернуться к / resources .

Изменить : Текущее решение - использовать абсолютные URL-адреса, как в моем примере кода выше, и в Apache (a) переписать / context -root / * в / * (b) как и прежде, затем ДОБАВИТЬ корень контекста ко всем запросам (c), пересылаемым к Jetty. Таким образом, большинство URL-адресов могут быть без корневого контекста, но некоторые URL-адреса (к моим ресурсам) могут иметь корневой контекст, и это нормально. Но мне это решение не нравится!

7
задан Adrian Smith 18 November 2010 в 13:38
поделиться