【发布时间】:2012-12-15 05:00:58
【问题描述】:
我正在试验 Wicket 和事件溯源。我正在尝试记录用户操作,以便我们可以重放它们或将它们用于测试或演示目的。
您会推荐什么策略?
例如,我可以定义动作类并将它们放在 onsubmit 等中。或者覆盖检票口的所有“动作”组件,例如链接、按钮、文本字段。等等。
有什么好的建议吗?
【问题讨论】:
标签: logging user-interface wicket event-sourcing
我正在试验 Wicket 和事件溯源。我正在尝试记录用户操作,以便我们可以重放它们或将它们用于测试或演示目的。
您会推荐什么策略?
例如,我可以定义动作类并将它们放在 onsubmit 等中。或者覆盖检票口的所有“动作”组件,例如链接、按钮、文本字段。等等。
有什么好的建议吗?
【问题讨论】:
标签: logging user-interface wicket event-sourcing
警告:这不是解决问题的方法。它可能仅适用于 ajax,但我也不确定。
您可以使用IComponentInstantiationListener 来检查是否有新创建的组件以及它们是否可点击。然后你可以附加一个日志行为。这样您就可以在一个地方轻松地打开和关闭日志记录,而不必为每个 Link-、Button 和 Whatnot-class 子类化来进行日志记录。
【讨论】:
IBehaviourListener 并将日志记录部分放入 onRequest 方法中。如果您需要,我稍后会以更明确的答案回复您。
Wicket 本身不提供类似这样的钩子,但根据您使用的其他技术,您可以在持久层中执行此操作 - 例如使用 JPA 的 @PreRemove、@PreUpdate、@PrePersist。 另一种方法是面向方面的编程(AOP)。
【讨论】:
考虑到每个用户操作都是一个 http 请求 ajax 或经典,您可以使用您需要的一些标识符记录每个请求(每个请求都有一个组件路径)。在 Wicket 1.4 中,您扩展了请求周期,在 1.5+ 中添加了请求周期侦听器。
见https://cwiki.apache.org/WICKET/requestcycle-in-wicket-15.html
【讨论】:
使用自 1.2 以来随 Wicket 提供的 request logger(尽管多年来其实现发生了很大变化)。这以(在 6.0 中,请参阅 wicket-extensions)JSON 格式记录请求目标和响应以进行解析。请注意,根据用户数量,这可能会生成笨重的日志。
【讨论】: