Wicket组件"Wicket:head"部分使用AJAX进行刷新。

3
我在使用Wicket ListPanel时遇到了一些问题。整个ListPanel是通过Ajax从同一页面上定义的过滤器进行刷新的。在正常情况下,这种模式运行得非常好。
ListPanel的一部分是一个组件,需要一些特定的JS和CSS文件才能正常运行。这些在特定组件的wicket:head部分中声明。
当页面第一次加载并且列表至少有一个项目时,一切都正常。但是,当呈现页面时列表为空时,ListPanel的子组件永远不会被加载,并且CSS / JS导入也不会被考虑。之后,如果您使用AJAX请求刷新DIV,则不会重新加载该组件的wicket:head部分,因此JavaScript代码将无法正常工作。
我的假设是,在正常页面渲染期间,Wicket将考虑wicket:head部分,但在通过AJAX更新组件时不会考虑它。
所以,我的问题是,有什么好方法可以获得我需要的资源,而不必将导入推到不直接使用资源的组件?我知道将它们推送到其他组件或页面会完成工作,但我真的认为这是不干净的,我喜欢将事物放在它们所属的位置,如果一个组件是唯一要使用某些资源的组件,它们应该只加载在那里。
1个回答

0

在你的列表面板中

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

你的JS应该有一个在domready时调用的函数,在wicket 1.5.x中完成工作 对于wicket 6,请查看this


好的,谢谢,我会去查看的。如果我理解正确的话,它会在 AJAX 请求之后呈现? - Martin
是的,它将在HTML片段插入后呈现。 - osdamv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接