在我的Java EE 6网络应用程序(在最新的GlassFish
3.1上运行)中,我正在使用JSF2-ManagedBeans并将@ManagedProperty
其注入到其他ManagedBeans中。现在我想知道是否也可以使用将a
@ManagedBean
注入a @WebServlet
中@ManagedProperty
。一些代码:
@WebServlet(name = "vdd")
public class VddServlet extends HttpServlet
{
@ManagedProperty(value = "#{userIdentity}")
private UserIdentity identity;
}
ManagedBean看起来像这样:
@ManagedBean
public class UserIdentity
{
...
}
这样工作吗?如果没有,我还必须通过什么其他方式将ManagedBean注入WebServlet(不使用CDI,目前还不行,因为GF 3.1 B32 /
33与OSGi-Java EE-apps结合使用时会出现一些问题,但是我们时间短)?
@ManagedProperty
由于@ManagedBean
只能在类中使用,因此无法在servlet中使用。此外,也不可能注入范围小于父对象本身的对象,因为这只会导致并发问题。注入程序将为此抛出运行时异常。servlet本质上是应用程序范围内的,并在所有用户之间共享,并且您的UserIdentity
bean似乎是会话范围的。
由于JSF在Servlet API之上运行并将会话范围的bean存储在会话中,因此您可以在servlet中将其作为会话属性来获取:
UserIdentity identity = (UserIdentity) request.getSession().getAttribute("userIdentity");
请注意,FacesContext
除了之外FacesServlet
,通常在servlet中也无法使用,因此FacesContext
按注释中的建议在servlet中使用没有任何意义,只会返回null
。
主要内容:@WebServlet 注解的属性,@WebServlet 注解的使用,@WebServlet 注解 和 web.xml 的优缺点在 Servlet 中,web.xml 扮演的角色十分的重要,它可以将所有的 Servlet 的配置集中进行管理,但是若项目中 Servelt 数量较多时,web.xml 的配置会变得十分的冗长。这种情况下,注解(Annotation)就是一种更好的选择。 与 XML 不同,注解不需要依赖于配置文件,它可以直接在类中使用,其配置只对当前类有效,这样就避免了集
问题内容: 我试图通过注释将整个JSF托管Bean注入另一个托管Bean非常相似,但是我正在注入Bean,而不是Servlet)。这就是我在做什么: 不起作用(JSF 2.0 / Mojarra 2.0.3): 有没有可能或者我需要通过编程方式进行注射? 问题答案: 您需要添加setter和getter 当将解析并注入依赖项时,它将使用setters注入,因此适当的setters / getter
我试图向自定义注释中注入一个值,但Spring似乎没有进行评估。
问题内容: 我有一个带有angular的应用程序,我需要使用这个库http://www.jointjs.com/,所以我下载了joint.min.js和joint.min.css并将它们的路由放置在index.html中,但是我不知道要在app.js中放入什么来注入它,而我一直在从角度获取注入错误。这可能不是这样做的方法吗?我搜索了很多,但是没有找到任何方法。我将不胜感激,在此先感谢您! 问题答案
问题内容: 我可以将自己的POJO注入到托管对象中,如下所示: 我有这个POJO: 这很好。如果将EJB注入到JSF支持bean中,则可以看到,按预期,该值是非null值。 但是,如果我尝试注入到,我得到部署以下异常: SomeEjb现在: Date有一个公开的,无参数的构造函数,我认为CDI只需“满足依赖性”即可。我确信这种行为是“符合规格”的,但是显然我对CDI的理解还存在很大的漏洞。 有人可
例如,我有handler: 为了测试它,我编写了以下测试: 我可以使用模拟变量someCount。我可以用Mockito注释来模拟它吗?