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