自定义Wicket(Ajax)控制与复杂的数据模型

时间:2017-04-07 17:36:37

标签: javascript d3.js components wicket

我们正在为Wicket(v8)尝试一个项目,我想知道以下场景的最佳实践是什么:

  • 我们有一个数据库库函数,它返回List<ComplexObject>
  • 正在某些IModel
  • 内处理呼叫
  • 我们希望渲染一个由此模型支持的d3可视化,我们称之为ComplexVisualization
  • 模型需要呈现给某些JavaScript变量(作为JSON),这样我们的d3代码就可以将其用作输入。
  • 用户可以在其他控件中进行一些更改,以便数据库库调用生成不同的List<ComplexObject>
  • 当ComplexVisualization作为Ajax Target添加时,JavaScript变量需要相应地更新其值,并且需要触发一些自定义JavaScript方法,以便我们可以刷新d3可视化。

我正在寻找一些代码示例,其中有人可以指出哪个类ComplexVisualization应该扩展,我们如何为此组件呈现一些HTML(如果需要),特别是如何让一个JavaScript变量同步使用IModel<List<ComplexObject>>

感谢您的帮助&amp;建议,

丹尼尔

1 个答案:

答案 0 :(得分:2)

ComplexVisualization可能有方法toJson(),将其序列化为JSON。此外,它可能具有返回String的方法update(),如:"window.updateVisualization(" + toJson() +")"。这样您就应该使用target.appendJavaScript(complexVisualization.update())

JavaScript方法updateVisualization应该由JavaScriptHeaderItem贡献来定义,例如在my-lib.js。