问题标签 [interceptor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hibernate - Hibernate拦截器:当集合元素更新时拦截的实体
我需要知道如何设置 Hibernate (...) 以实现以下问题:
我有一个双向(组合)一对多关联(a.bs 是 Set 对象,ba 是 A 对象)。当我从 DB 加载“a”并更新其中一个“bs”时,我需要 Hiernate 在 saveOrUpdate A 时拦截 A 实体。
代码:
用例:
执行更改是因为(迷你)模型已正确注释。
问题是我的拦截器只检测到 B 实体的变化,而不是 A。我需要检测 A 的变化,因为我需要更新审计信息。
另一种观点是:我需要通过 B 获取 A 实体并对其进行更新。其实我可以从B中得到A,但是改变不持久...
简化问题: 当我的拦截器拦截 B 实体时,我必须修改 A 实体(设置日期)。它在 onSave 中可以正常工作,但在 onFlushDirty 中却不行。为什么?
这是:当B被更新时,被拦截(onFlushDirty)。onFlushDirty 方法的主体,除其他外,执行以下操作:
所以,在那一刻,附加到会话的 A entity 应该变脏,因此它应该引发拦截动作......我的意思是,应该再次调用 onFlushDirty 方法,他的时间是 A 实体。我错了吗?但是,无论如何,应该更新 A.lastModifyDate ......这不会发生!!!
下面我展示了我的应用程序的实际行为:
- 我创建了一个 A 对象
- 我创建了一个 B 对象并将其关联到 A
我坚持 A => A.lastModifyDate 是正确的日期(确定)
我创建了一个 A 对象
- 我创建了一个 B 对象并将其关联到 A
- 我坚持 A => A.lastModifyDate 是正确的日期(确定)
我加载 B 对象,更新它并坚持 B -> A.lastModifyDate 是正确的日期(确定)
我创建了一个 A 对象
- 我创建了一个 B 对象并将其关联到 A
- 我坚持 A => A.lastModifyDate 是正确的日期(确定)
我加载 A 对象,更新其 B 对象并坚持 A -> A.lastModifyDate不是正确的日期(KO)
我创建了一个 A 对象
- 我创建了一个 B 对象并将其关联到 A
- 我坚持 A => A.lastModifyDate 是正确的日期(确定)
我加载 A 对象,更新任何 A 的字段及其 B 对象,并且我坚持 A -> A.lastModifyDate不是正确的日期(KO)
我创建了一个 A 对象并将其持久化。
我加载 A 对象,我将一个新的 B 对象关联到它,并且我坚持 A => A.lastModifyDate 是正确的日期(OK)
我创建了一个 A 对象并将其持久化。
- 我加载一个对象,我更新任何 A 的字段,我将一个新的 B 对象关联到它,我坚持 A => A.lastModifyDate 是正确的日期(OK)
任何的想法?
谢谢!
hibernate - 在拦截器上更新父亲
我的模型:
用例:
- 在 DB 中有一个
Father
与Son
对象关联的对象(bidir)。 - 从数据库父亲加载。
- 更新父亲的姓名字段。
- 更新儿子的姓名字段。
- 坚持父亲。
我的拦截器首先检测到父亲更新(onFlushDirty)。然后为儿子执行 onFlushDirty。在这种情况下,我更新了 son.lastModifyDate和 Father.lastSonModifyDate。
执行结束时,所有更新都将保留,但 Father.lastSonModifyDate 除外。我认为这是因为父亲在会话中并且在儿子之前已经更新,所以这个实体覆盖了 onFlushDirty 方法中对儿子实体所做的更改。
我怎样才能达到我的目标(从儿子拦截器中设置父亲的 lastSonModifyDate)?
谢谢。
castle-windsor - 用于私有/受保护方法的 Castle Windsor 拦截器
为了让温莎城堡的拦截器拦截一个方法,是否需要将该方法声明为 public?
seam - SEAM: Component "disinjected" "too soon" in interceptor?
Let's say I have the following interceptor in a SEAM app:
myMonitor.a() works (so Monitor is correctly injected), myMonitor.b() fails because Monitor is already null. Seam Doc says: "Injected values are disinjected (i.e., set to null) immediately after method completion and outjection."
Is that what is happening? Can I do something to tell SEAM to "not yet" "disinject" the component? I can of course also do something like XContext.get(..), but I'm wondering whether this is a bug or a mistake from my side. thanks!
struts2 - 使用带有注解的 Struts 2 消息存储拦截器
我目前正在转换一个 Struts 2 应用程序以使用 Convention 插件和 Annotations 而不是 XML 配置。
原始 XML 如下所示:
我已经替换为
但我不确定如何将参数传递给消息存储拦截器。有什么想法吗?
login - 使用 Struts 1 实现 Struts 2 拦截器
我有一个用 Struts 1 编写的遗留应用程序。我被要求添加的唯一功能是保护某些操作。目前任何用户都可以为所欲为。这个想法是允许所有用户看到数据,但阻止修改操作,即修改用户应该登录的数据。
我知道 Struts2 有拦截器,所以我可以将它们附加到所需的操作并在需要时将用户转发到登录页面。但是我怎样才能在 Struts 1 应用程序中做类似的事情呢?
我的第一个想法是创建自己的抽象 Action 类:
然后更改所有需要身份验证的操作
至
然后添加登录表单、登录操作(执行身份验证并将此状态放入会话)并更改 JSP 标题块以显示身份验证块,例如,“您是(未登录)/”,登录/注销。我想这应该可以解决问题。
- 如果这不能解决问题,请解释原因。
- 有没有更好(像拦截器一样优雅)的方法来做到这一点?
先感谢您。
nhibernate - NHibernate 拦截器 - 它是什么
什么是 NHibernate 拦截器,它在应用程序中的用途是什么?
另外,在本文中,我了解到使用 NHibernate 会使桌面应用程序在启动时变慢,因此为了避免这种情况,我需要将配置保存在一个文件中,然后从保存的文件中加载它。我怎样才能做到这一点?我在该教程中没有找到任何示例。
wcf - 紧凑框架上的 WCF 拦截器
我想在我的 WCF 服务中添加一个拦截器层,以发送设备 ID 来验证设备。
我对 WCF 拦截器非常陌生。在我花时间弄清楚它们之前,我想知道它们是否甚至可以与 Compact Framework 一起使用。
那么,WCF 拦截器是否可以与 Compact Framework 一起使用,如果可以,在我研究它们时是否需要牢记任何特殊注意事项。(任何关于如何做到这一点的 C# 示例都很棒!)
我正在使用 Visual Studio 2008 SP1。
spring-mvc - spring 3 mvc 拦截所有请求
您好我想知道是否可以创建全局拦截器并在那里设置语言环境。
我有 urlrewrite 规则将 /fr/* 重写为 /*?siteLang=fr
我看到了如何根据参数设置语言环境的示例,但它们都是相同的,并且需要我使用 url 映射。是否可以在全局范围内执行此操作,以便在每个请求上调用语言环境拦截器,无论它用于什么控制器?
我的 xml 中没有 dispatchController 这样的东西,所以我不能使用它,但想法是拦截一切(以任何方式)。
我基本上希望在 uri 开头有带有语言环境的 url,然后是 /fr/user/details /de/products/hifi 等应用程序位
不同的控制器使用相同的重写 url 约定,并且出于控制器特定的原因从不使用 siteLang。
谢谢
nhibernate - 保存时未使用 NHibernate 拦截器
我有一个使用 Spring.Net 在 HibernateTemplate 中设置的 NHibernate 拦截器(我使用的是 ASP.NET MVC,fwiw),用于审计。但是,由于某种原因,当我调用 genericDAO.Get(id) 时触发 OnLoad 方法时,当我尝试使用 genericDAO.SaveOrUpdate(object) 保存某些内容时,不会调用 OnSave 或 OnFlushDirty 拦截器方法。有谁知道这可能是为什么?
我已经在 VS 调试器中的方法上设置了断点,所以我很确定拦截器已设置并且我没有错过任何方法调用。显然,一切都被正确保存和检索。