我必须在项目中使用jsf和cdi,我已经看到当我使用cdi时我应该使用@named而不是@ManagedBean,但是当我更改它时,浏览器上不再显示该消息。
现在只是一个测试,所以它没有复杂的代码和东西。
这是我的索引:
<!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://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Hello JSF!</title>
</h:head>
<h:body>
<h:outputText value="#{teste.message}" />
</h:body>
</html>
这是我的豆子:
package jsfConnection;
import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
@Named("teste")
@RequestScoped
public class Teste {
public String getMessage() {
return "ola";
}
}
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<description>Patrimônio web.xml</description>
<!-- Nome da sua aplicação -->
<display-name>Patrimônio</display-name>
<!-- Faces Servlet -->
<!-- Configuração do arquivo inicial quando a aplicação for inicializada -->
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsf</welcome-file>
</welcome-file-list>
<!-- Configuração do Controlador Faces Servlet -->
<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>
当我使用@ManagedBean时它正常显示但是当我切换到@Named时它根本不打印任何东西......
答案 0 :(得分:1)
这是“How to install and use CDI on Tomcat?”的副本。请注意,我试图在我的博客上做一些详细的说明:“Enabling JSF 2.2 and CDI 1.2 on Tomcat 8”。这些说明也适用于Tomcat 7,虽然我没有测试。我也可能会注意到你可能最好使用一个已经附带CDI和JSF实现的TomEE版本。
有关更多详细信息,请参阅Blog,但在Tomcat上设置所有内容需要2个主要步骤:
provided
和runtime
库定义为maven依赖项使用以下3个文件设置引导:
WEB-INF/web.xml
WEB-INF/beans.xml
META-INF/context.xml
- 此META-INF目录可以在webapp根目录下找到,也可以在找到WEB-INF的相同位置找到。另请注意,作为web.xml
文件的一部分,您可以定义请求(URL)如何映射到物理位置(路径)。 Faces Servlet的<servlet-mapping>
,可以作为路径前缀,也可以作为扩展名:<url-pattern>/faces/*</url-pattern>
vs <url-pattern>*.xhtml</url-pattern>
。
答案 1 :(得分:0)
Tomcat不是Java EE服务器,因此CDI无法开箱即用。要在其中使用CDI,您需要1)包含CDI实现,2)在web.xml
中配置它。
有关详细信息,请参阅CDI实施文档(Weld或OpenWebBeans)。