在Wicket 1.5中,它們是experimenting與不同的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"));
}
}
主頁添加了應該先呈現的附加腳本。網頁還覆蓋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;
}
}
現在,最終的結果將是,通過添加主頁劇本第一次呈現,並通過添加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>
您也可以考慮有關異步標記,這將不需要放置腳本頭部信息聯繫Webtrends的支持:http://slidesha.re/fSPlyV – hemp 2011-01-12 22:18:35
不是一個真正的回答你的問題,但它可能解決您的問題:在關閉