РЕДАКТИРОВАТЬ : В своем первоначальном ответе я упустил требование сделать этот файл JavaScript доступным из общедоступного URL.В поисках пути к этому я понял, что весь мой подход был ошибочным.Итак, я перенесу свой исходный ответ в конец и предоставлю более подробный ответ здесь.
Чтобы опубликовать текстовый ресурс на общедоступном URL (JavaScript или CSS), вам необходимоотредактируйте ваш метод init()
в WicketApplication
, добавив:
String resourceKey = "DYN_RES_KEY";
//load your text template
final TextTemplate textTemplate = new PackagedTextTemplate(MyPage.class, "script.js", "text/javascript", "UTF-8");
//add the resource
getSharedResources().add(resourceKey, new Resource() {
@Override
public IResourceStream getResourceStream() {
String queryParam = getParameters().getString("paramName");
//...do whatever you need with the parameters...
Map<String,Object> vars = new HashMap<String,Object>();
vars.put("param", queryParam);
String stringValue = textTemplate.asString(vars);
return new StringResourceStream(stringValue, textTemplate.getContentType());
}
});
//mount the resource at some public URL
mountSharedResource("/resource", Application.class.getName() + "/" + resourceKey);
//make alias, optional
getSharedResources().putClassAlias(MyPage.class, "scripts");
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Этот код не написан в IDE и никогда не запускался.Как таковой, он может даже не скомпилироваться.Тем не менее, этого должно быть достаточно, чтобы проиллюстрировать, как это может быть достигнуто.
Этот ответ основан на " Динамически генерировать таблицу стилей CSS " и " URL динамического изображения Wicket", см. эти источники для получения более подробной информации.
ОРИГИНАЛЬНЫЙ ОТВЕТ (полезно, если вы хотите добавить JavaScript или CSS в качестве внешнего файла на страницу Wicket, но не сделать его публично видимым):
Проверьте " динамически генерировать страницу стилей CSS " на вики-сайте Wicket и WICKET-2890 в JIRA.Начиная с Wicket 1.4.10, класс TextTemplateResourceReference теперь является частью ядра Wicket, поэтому вам больше не нужно копировать и вставлять его.
На странице вики упоминается страница CSS, но подходто же самое для JavaScript или любого другого содержимого без разметки.