【发布时间】:2011-11-15 04:33:15
【问题描述】:
在 JSP 中,可以使用 ${myBean.myAttribute} 等 EL 表达式来使用 CDI 托管 bean。这里没问题。
我想在 JSP 文件中使用带有 @Inject 的“常规注入”(即不使用 EL 表达式),例如: 然后是 。即使该示例可以使用 EL 表达式来实现,但其他一些用例却不能。
应用服务器似乎并不完全支持这一点:
- JBoss 6.0.0、JBoss 6.1.0、Resin 4.0.22:好的,它工作得很好。
- JBoss 7.0.1、GlassFish 3.x(测试了多个版本):失败,myBean 仍然为空。
它应该可以在 JSP 中正常工作,因为:
(1) 根据各种相关规范,它在 servlet 中运行良好,并且
(2) JSP 在运行时被翻译成 servlet。
你们知道我正在尝试做的事情是否受支持吗?可能有任何内部/实施信息吗?
【问题讨论】:
-
我不知道它是否(或应该)支持,但我知道在 JSP 中这样做只是一个坏主意。 JSP 旨在生成标记。多年来,它们不应该包含 Java scriptlet。在常规 servlet 中执行您想要执行的操作,然后分派到 JSP。仅在 JSP 中使用 EL 和 JSP 标签。
-
使用 servlet 和/或 MVC 框架在某些情况下会有所帮助,具体取决于应用程序的要求。但有时添加一个 servlet 只是为了将服务 bean 引用传递给 JSP 是多余的,并且可能被认为是一种反模式。我真正感兴趣的是了解 JSP 的 CDI 行为,即使有其他解决方案。 :)
标签: jsp jakarta-ee el code-injection cdi