Spring注入+JSF+Hibernate

Spring注入+JSF+Hibernate,spring,jsf,Spring,Jsf,我实际上是从JSF开始的,所以放轻松 我正在尝试混合Spring3.x+Hibernate4+JSF2.2 我曾经在桌面应用程序中混合使用Spring和Hibernate,这根本不是问题 但是现在,我有点困惑。 我试图通过注释进行映射,我很确定这是一个混乱 首先,我想问您集成所有这些技术并保持MVC模式的最佳实践 尽管如此,以下是我的文件: web.xml faces-config.xml AppMainController.java CDDaoImpl.java 最后是*.xhtml文件: 我

我实际上是从JSF开始的,所以放轻松

我正在尝试混合Spring3.x+Hibernate4+JSF2.2 我曾经在桌面应用程序中混合使用Spring和Hibernate,这根本不是问题

但是现在,我有点困惑。 我试图通过注释进行映射,我很确定这是一个混乱

首先,我想问您集成所有这些技术并保持MVC模式的最佳实践

尽管如此,以下是我的文件:

web.xml faces-config.xml AppMainController.java CDDaoImpl.java 最后是*.xhtml文件: 我尝试过以下方法:

将@ManagedBeanname=ctrl添加到AppMainController并调用ctrl.findAllCDs。 创建一个属性private List cds和一个调用cdDao.findAll的方法,以填充该列表并作为myBean.cds检索到数据表。 以下是例外情况:

Null PoExtExeExchange:CDAO在某些点是空的,这导致我考虑唯一的逻辑推理:CDDAO没有被注入自动 @ManagedBean不在正确的位置。。
如果您能给我一个指导方针和路径,我将不胜感激,因为我真的很困惑。

在将@ManagedBean更改为@Namedname和@Autowired更改为@Inject之后,问题就解决了。

如果您显然不知道Spring的用途,为什么要安装它?因为这是一个个人项目,你的问题不仅毫无意义,而且毫无意义。仅仅因为我不知道如何在JSF中使用它,并不意味着我不会尝试学习。@kolossus谢谢你的解释。将来会非常有用。
<?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">
    <display-name>WebCD</display-name>
    <!-- Spring Config -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/Spring/context.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

    <welcome-file-list>
        <welcome-file>index.html</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>
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>
    <context-param>
        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
        <param-value>resources.application</param-value>
    </context-param>
    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">

    <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
    </application>

</faces-config>
@Controller
public class AppMainController {
@Autowired
    private CDDao                       cdDao;

    public List<CD> findAllCDs() throws SQLException {
        List<CD> cds = cdDao.findAll();
        return cds;
    }
}
@Repository
public class CDDaoImpl extends Dao<CD> implements CDDao {

    @Override
    public Class<CD> getEntityClass() {
        return CD.class;
    }

}
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">
<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <title>Lista de CDs</title>
</h:head>
<h:body>
    <center>
        <h1>Lista de CDS</h1>
    </center>
    <h:messages />
    <h:dataTable value="#{/*Right here I really don't know what to call*/.findAllCDs()}" var="cd"
        rules="rows" cellpadding="5">
        <f:facet name="caption">Essa é a lista de todos os CD's cadastrados no sistema</f:facet>
        <f:facet name="header">Lista de CD's</f:facet>
        <f:facet name="footer">Fim da Lista de CD's</f:facet>
        <h:column>
            <f:facet name="header">Código</f:facet>
#{cd.id}
</h:column>
        <h:column>
            <f:facet name="header">Descrição</f:facet>
#{cd.descricao}
</h:column>
        <h:column>
            <f:facet name="header">Gravadora</f:facet>
#{cd.fkLabel}
</h:column>
        <h:column>
            <f:facet name="header">Preço</f:facet>
#{cd.preco}
</h:column>
        <h:column>
            <f:facet name="header">Data Compra</f:facet>
#{cd.dataCompra}
</h:column>
        <h:column>
            <f:facet name="header">Data Gravação</f:facet>
#{cd.dataGravacao}
</h:column>
    </h:dataTable>
</h:body>
</html>