【问题标题】:Logging user actions in Wicket在 Wicket 中记录用户操作
【发布时间】:2012-12-15 05:00:58
【问题描述】:

我正在试验 Wicket 和事件溯源。我正在尝试记录用户操作,以便我们可以重放它们或将它们用于测试或演示目的。

您会推荐什么策略?

例如,我可以定义动作类并将它们放在 onsubmit 等中。或者覆盖检票口的所有“动作”组件,例如链接、按钮、文本字段。等等。

有什么好的建议吗?

【问题讨论】:

    标签: logging user-interface wicket event-sourcing


    【解决方案1】:

    警告:不是解决问题的方法。它可能仅适用于 ajax,但我也不确定。

    您可以使用IComponentInstantiationListener 来检查是否有新创建的组件以及它们是否可点击。然后你可以附加一个日志行为。这样您就可以在一个地方轻松地打开和关闭日志记录,而不必为每个 Link-、Button 和 Whatnot-class 子类化来进行日志记录。

    【讨论】:

    • 我明白了,但行为如何“抓住”例如链接中的 onClick 方法?或者这只适用于启用 Ajax 的链接,我可以覆盖默认的 AjaxClick 事件吗?
    • @RobAu 好点。我自己从来没有这样做过,但我确定我在某个地方看到过。我认为您必须在您的 Behavior 中实现 IBehaviourListener 并将日志记录部分放入 onRequest 方法中。如果您需要,我稍后会以更明确的答案回复您。
    • 您好 Nicktar,查看了 IBehaviorListener,但对于如何从请求中获取 onclick,我仍然有点茫然。有什么提示吗?
    • @RobAu 我已经尝试了几个小时来找出我在哪里看到这个或者它应该如何工作,但我失败了。非常抱歉浪费了您的时间。我试图删除我的答案,但我不能,因为它被接受了。再次,我很抱歉。
    • 请留下答案,它提供了方法和想法的见解。我删除了接受的刻度线。感谢您的努力!
    【解决方案2】:

    Wicket 本身不提供类似这样的钩子,但根据您使用的其他技术,您可以在持久层中执行此操作 - 例如使用 JPA 的 @PreRemove、@PreUpdate、@PrePersist。 另一种方法是面向方面的编程(AOP)。

    【讨论】:

      【解决方案3】:

      考虑到每个用户操作都是一个 http 请求 ajax 或经典,您可以使用您需要的一些标识符记录每个请求(每个请求都有一个组件路径)。在 Wicket 1.4 中,您扩展了请求周期,在 1.5+ 中添加了请求周期侦听器。

      https://cwiki.apache.org/WICKET/requestcycle-in-wicket-15.html

      【讨论】:

        【解决方案4】:

        使用自 1.2 以来随 Wicket 提供的 request logger(尽管多年来其实现发生了很大变化)。这以(在 6.0 中,请参阅 wicket-extensions)JSON 格式记录请求目标和响应以进行解析。请注意,根据用户数量,这可能会生成笨重的日志。

        【讨论】:

        猜你喜欢
        • 2017-02-07
        • 1970-01-01
        • 1970-01-01
        • 2021-12-23
        • 1970-01-01
        • 2015-08-27
        • 1970-01-01
        • 2017-10-26
        • 1970-01-01
        相关资源
        最近更新 更多