Jakarta ee CDI InjectionPoint不使用网页
学习CDI,我正在尝试一个例子。显然,当实际注入点位于网页中时,不会注入注入点。希望这有意义 有一个网页和两个类: webpage.xhtml:Jakarta ee CDI InjectionPoint不使用网页,jakarta-ee,cdi,Jakarta Ee,Cdi,学习CDI,我正在尝试一个例子。显然,当实际注入点位于网页中时,不会注入注入点。希望这有意义 有一个网页和两个类: webpage.xhtml: <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body style="background-color: #{userInfo.backgroundColor};">
Hello from Facelets.
/h:body>
</html>
UserInterfaceFactory.java:
public class UserInterfaceFactory {
private static final Logger logger = Logger.getAnonymousLogger();
@Produces
public UserInterface getUserInterface(@New AdultUserInterface ai, **InjectionPoint p**) {
logger.info("In UserInterfaceFactory " + p);
return ai;
}
}
UserInfo.java中的InjectionPoint变量未获得赋值。因此,这里的输出是:
In UserInfo null
In UserInterfaceFactory [parameter 1] of [method] @Inject public com.imacious.learncdi.client.UserInfo.setUserInterface(UserInterface, InjectionPoint)
UserInterfaceFactory中的InjectionPoint变量获得分配的值。因此,这里的输出是:
In UserInfo null
In UserInterfaceFactory [parameter 1] of [method] @Inject public com.imacious.learncdi.client.UserInfo.setUserInterface(UserInterface, InjectionPoint)
那么我的问题是,为什么注入点在一种情况下“起作用”,而在另一种情况下不起作用。更好的是,当注入是一个web页面(jsf或jsp)时,为什么它似乎不起作用呢?这是按设计工作的 没有注入,因为您从EL引用bean,所以没有注入点。参见下面1.0规范中的案例2 容器必须确保在此过程中实例化的任何依赖对象的每个InjectionPoint和qualifier@Default类型的注入点都接收:
- InjectionPoint实例,表示从属对象将被注入的注入点,或
- 如果未注入任何注入点,则为空值