- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使我的 Action 类成为单例。重点是使操作类成为 MVC 模式中真正的 Controller 。特别是在实现 REST Controller 时, Controller 的范围可以扩展到应用程序的生命周期。与 Spring 框架中一样, Controller 默认放置在默认作用域中,Spring 中的默认作用域是单例。
Struts 2 也有一个默认作用域,而且它也是单例的。我想将我的操作类放入此范围并将它们从值堆栈中删除。
如何修改 Struts 2 框架以使我的操作像 Spring 中的 Controller 一样?我知道我可以将操作类的管理委托(delegate)给 Spring,但我不能使用默认范围,并且 Struts 2 容器仍然保持运行。我无法将其从框架中删除,因为它不可插入。
因此,在 Spring 和 Struts2 容器中走动时,我无法使操作类成为单例,因为 Struts 2 会实例化并将它们放入 ValueStack
中。
这是我的问题:
如果我选择 Struts 2 和 Spring 之间的容器将操作类放入默认范围,我如何告诉 Struts 2 框架不要将它们放入 ValueStack
中?
最佳答案
假设您正在使用 XWork 的 DefaultActionInvocation
实现,它是通过 init
方法完成的。将其拉出来有点痛苦,因为它位于 XWork 和 S2 中的操作代理和操作代理工厂下面。
也就是说,我会非常犹豫做出这样的改变;它具有系统范围的影响,并且基本上与 XW/WW/S2 的一切背道而驰。
(不相关,但单例本质并不是定义 Controller ,而是定义组件的职责。)
关于java - 如何从 ValueStack 中删除操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40233771/
我是一名优秀的程序员,十分优秀!