Hallo Forum,
Ich bringe mir seit kurzem JSF näher und würde nun gerne die ursprünglichen ManagedBeans zu CDI migrieren. Dazu habe ich die Deklaration CDI entsprechend angepasst, sowie eine beans.xml Datei meinem WEB_INF Verzeichnis hinzugefügt.
Alles was ich im Web so finde, spiegelt in der Regel nur diese Schritte wieder, jedoch gelingt es nicht, Daten aus einer CDI Klasse, über die View anzuzeigen.
Anbei mal der meines Erachtens relevante Code. Vielleicht erkennt ja jemand von euch etwas, was ich übersehe oder aber nicht weiß. Vielen Dank schonmal fürs Lesen
Nutzen tue ich Eclipse mit Glassfish 5 und Maven.
Ich bringe mir seit kurzem JSF näher und würde nun gerne die ursprünglichen ManagedBeans zu CDI migrieren. Dazu habe ich die Deklaration CDI entsprechend angepasst, sowie eine beans.xml Datei meinem WEB_INF Verzeichnis hinzugefügt.
Alles was ich im Web so finde, spiegelt in der Regel nur diese Schritte wieder, jedoch gelingt es nicht, Daten aus einer CDI Klasse, über die View anzuzeigen.
Anbei mal der meines Erachtens relevante Code. Vielleicht erkennt ja jemand von euch etwas, was ich übersehe oder aber nicht weiß. Vielen Dank schonmal fürs Lesen
Nutzen tue ich Eclipse mit Glassfish 5 und Maven.
HTML:
<!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:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>CDI</title>
</h:head>
<h:body>
<h3>CDI_Inject</h3>
<h:outputText value = "#{cDIBean.sayHallo}"></h:outputText>
<h:outputText value = "#{cDIBean.requestBean.sayHallo}"></h:outputText>
</h:body>
</html>
Java:
package beans;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import javax.inject.Named;
@Named // (value = "cDIBean") --> wurde mit uns ohne Value-Angabe probiert
@Dependent
public class CDIBean implements Serializable {
@Inject
private RequestBean requestBean;
public String sayHallo () {
return "Hallo";
}
@PostConstruct
public void init () {
}
public RequestBean getRequestBean() {
return requestBean;
}
public void setRequestBean(RequestBean requestBean) {
this.requestBean = requestBean;
}
}
Java:
package beans;
import java.io.Serializable;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named
@RequestScoped
public class RequestBean implements Serializable {
public String sayHallo () {
return "Hallo";
}
}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
version="2.0" bean-discovery-mode="all">
</beans>
XML:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>DependencyInjectionCDI</display-name>
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>default.xhtml</welcome-file>
<welcome-file>default.jsp</welcome-file>
<welcome-file>default.htm</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<context-param>
<param-name>javax.faces.ENABLE_CDI_RESOLVER_CHAIN</param-name>
<param-value>true</param-value>
</context-param>
</web-app>