简短版本:如何从由 WebContainer 执行的 Command/JSP 调用的 POJO 代码访问 HttpRequest 对象?
- POJO 不知道 CommandContext 或 HttpRequest(或其表亲)。
- POJO 在执行堆栈中非常深入,因此更改方法签名意味着更改所有父方法签名以及调用这些方法的位置。
我也检查了一个类似的帖子(我的 POJO 由 WebContainer 调用,并且必须有一种方法可以以某种方式访问请求而无需像这样通过箍):Retrieving Web Session from a POJO Outside the Web Container
长版:我一直试图在大海捞针中找到这根针:试图找出一种通过当前 WebContainer 线程(或任何其他方式,类似于通过 TransactionManager 获取事务)。
知道这些容器线程与单个执行页面/命令/等相关联,我想知道是否有一种方法可以在不使用 WorkArea 的情况下执行此操作,ThredLocal 样式不是那么理想的方法?
我们面临的问题是,多年来编写的许多代码不关心 storeId 或 langId。因此,与其修复所有这些代码,我们希望以某种方式(使用 HttpRequest 对象)访问 Session 上下文,以便我们可以获取 CommandContext 和/或其他结构来找出我们的 storeId 和 langId 以及与会话相关的其他数据.
需要任何进一步的细节,请随时询问。
一个示例伪代码片段:
public class MyLittleHelper {
. . .
void unawareMethod() {
// I know it is really bad practice not to pass the actual objects around...
// But hear me out for a sec...
// This could be the easiest way of changing things, however bad it looks.
// my storeId and langId unaware method now needs to access to storeId and langId
}
. . .
} // end of class
任何帮助将不胜感激。