Java jsf与spring的集成

Java jsf与spring的集成,java,spring,jakarta-ee,jsf-2,tomcat7,Java,Spring,Jakarta Ee,Jsf 2,Tomcat7,我试图集成jsf和spring,但tomcat有错误404。我真的很困惑,我找不到什么问题。我将default.xhtml放在web内容中,但tomcat说:描述请求的资源(/jsfandspring/faces/default.xhtml)不可用。 UserBoImpl.java package p; public class UserBoImpl implements UserBo{ String name; public void setName(String name

我试图集成jsf和spring,但tomcat有错误404。我真的很困惑,我找不到什么问题。我将default.xhtml放在web内容中,但tomcat说:描述请求的资源(/jsfandspring/faces/default.xhtml)不可用。 UserBoImpl.java

package p;

public class UserBoImpl implements UserBo{
    String name;

    public void setName(String name) {
        this.name = name;
    }

    public String getMessage() {

        return "hi: " + name;

    }
}
UserBean.java

package p;
import java.io.Serializable;

import p.UserBo;

//DI via JSF managed bean
public class UserBean implements Serializable{

    //DI via Spring
    UserBo userBo;

    public void setUserBo(UserBo userBo) {
        this.userBo = userBo;
    }

    public String printMsgFromSpring() {

        return userBo.getMessage();

    }

}
default.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">
<html xmlns="http://www.w3.org/1999/xhtml"   
      xmlns:h="http://java.sun.com/jsf/html"
      >

    <h:body>

        <h1>JSF 2.0 + Spring Example</h1>

        #{user.printMsgFromSpring()}

    </h:body>

</html>

我的问题在哪里。我找不到它。

除了其他方面,但你不应该得到404错误(我猜你可能有500个错误),检查文件default.xhtml的位置。检查tomcat上的部署文件夹,然后在jsf中定义支持bean,spring mcv选择其中一个。我使用maven,它成功了。点击[此处][1][1]:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="UserBo" class="p.UserBoImpl">
        <property name="name" value="Samira" />
    </bean>

</beans>
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>jsfandspring</display-name>
  <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>/faces/*</url-pattern>
  </servlet-mapping>
  <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
   <welcome-file-list>
    <welcome-file>faces/default.xhtml</welcome-file>
  </welcome-file-list>
  <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>
   <listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
  <listener>
    <listener-class>
        org.springframework.web.context.request.RequestContextListener
    </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>

    <managed-bean>
        <managed-bean-name>user</managed-bean-name>
        <managed-bean-class>p.UserBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
        <managed-property>
            <property-name>userBo</property-name>
            <value>#{userBo}</value>
        </managed-property>
    </managed-bean>

</faces-config>
Class org.springframework.web.jsf.el.SpringBeanFacesELResolver must extend the type javax.el.ELResolver