Wicket组件“wicket:head”部分用AJAX刷新

时间:2013-08-12 11:37:00

标签: javascript ajax wicket

我在使用Wicket ListPanel时遇到了一些问题。整个ListPanel通过Ajax从同一页面上定义的过滤器刷新。在正常情况下,此架构非常有效。

ListPanel的一部分是需要一些特定的JS和CSS文件才能正常运行的组件。这些在wicket中声明:特定组件的head部分。

第一次加载页面并且列表至少有一个项目时,一切正常。但是,当呈现页面时列表为空时,ListPanel的子组件永远不会被加载,并且不会考虑CSS / JS导入。如果之后使用AJAX请求刷新DIV,则不会重新加载该组件的wicket:head部分,因此Javascript代码已损坏。

我的假设是Wicket会在正常页面渲染过程中考虑wicket:head部分,但不会在通过AJAX更新组件时考虑。

所以,我的问题是,在不必将导入推送到不直接使用资源的组件的情况下,获取所需资源的好方法是什么?我知道将它们推送到其他组件或页面将完成工作,但我不认为它很干净,我喜欢它们属于它们的东西,如果一个组件是唯一使用某些资源的组件,它们应该只能装在那里。

1 个答案:

答案 0 :(得分:0)

在listPanel中

@Override
public void renderHead(IHeaderResponse response) {          
    super.renderHead(response);
    response.renderOnDomReadyJavaScript("someDomReadyJSFunction();");
}

你的JS应该有一个在domready上调用的函数,它将在wicket 1.5.x中完成 对于检票口6检查this