В Wicket 1.5 они экспериментируют с различными IHeaderRenderStrategy
реализациями, такими как ChildFirstHeaderRenderStrategy (экспериментальная) или ParentFirstHeaderRenderStrategy (по умолчанию). Кажется, что переупорядочивание вкладок заголовка было проблемой в 1.4, поэтому они обращаются к нему.
Однако для Wicket 1.4 есть какое-то решение. Идея состоит в том, чтобы переупорядочить список поведений (вклад заголовков - просто еще один IBehavior). Каждый компонент имеет защищенный метод getBehaviors()
, который можно перезаписать. Хитрость заключается в том, чтобы найти поведение, соответствующее вашему специальному файлу JS, который должен быть включен первым. Я сделал это, создав собственный экземпляр объекта HeaderContribution, чтобы я мог выполнить сравнение экземпляров и затем использовать ArrayList для перемещения объекта HeaderContribution из середины списка поведения в верхнюю часть списка поведения:
public abstract class BasePage extends WebPage {
public BasePage() {
add(HeaderContributor.forJavaScript("foo-base.js"));
}
}
HomePage добавляет дополнительный скрипт, который должен отображаться первым. Домашняя страница также перезаписывает метод geBehaviors ():
public class HomePage extends BasePage {
private static final long serialVersionUID = 1L;
private final HeaderContributor contrib = new HeaderContributor(
new IHeaderContributor() {
public void renderHead(IHeaderResponse response) {
response.renderJavascriptReference("foo-first.js");
}
});
public HomePage(final PageParameters parameters) {
add(new Label("message", "If you see this message ..."));
add(contrib);
}
@Override
protected List getBehaviors(Class type) {
List behaviors = super.getBehaviors(type);
ArrayList sortedBehaviors = new ArrayList(behaviors);
boolean moveToTop = true;
if (moveToTop) {
if (!sortedBehaviors.remove(contrib)) {
throw new IllegalStateException();
}
sortedBehaviors.add(0, contrib);
}
return sortedBehaviors;
}
}
Теперь конечным результатом будет то, что скрипт, добавленный HomePage, будет отображаться первым, а скрипт, добавленный BasPage, - позже.
<html xmlns:wicket="http://wicket.apache.org/... >
<head>
<title>Wicket Quickstart Archetype Homepage</title>
<script type="text/javascript" src="foo-first.js"></script>
<script type="text/javascript" src="foo-base.js"></script>
</head>