在我看来,Spring
和JSF
- 两者都可以很好地使用。当然,这主要取决于您使用这些框架的要求和偏好。
Spring——它有很好的事务管理、依赖注入、安全性和许多其他特性,然而——plainJSF
没有提供这种开箱即用的特性,但是 JSF 有很好的呈现视图的方式。因此,两个框架中的这些功能混合在一起可能会导致简单性。JSF 有多种基于它构建的框架,例如:
在我看来,如果您一直使用JSF
. JSF 有ManagedBean (s),它根据您的配置为您的请求提供服务,就像 Spring 控制器一样。
实际配置非常简单。你需要有:
faces-config.xml
包含SpringBeanFacesELResolver 的文件:
<?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>
<navigation-rule>
<!-- your rules here -->
</navigation-rule>
</faces-config>
弹簧applicationCotext.xml
文件。通常的弹簧配置,没有什么JSF
特别的。
你web.xml
应该看起来像这样:
<web-app 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-app_3_0.xsd"
version="3.0">
<!-- other config -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</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>
<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>
<!-- other of config -->
</web-app>
最酷的东西JSF
是View Scope,如果你一直使用JSF
with ,它会默认丢失Spring
,但绝对不想丢失它。这解释了如何使 View Scope 工作JSF
和Spring
集成。
如果我要从头开始构建一些应用程序,我会选择这两个框架并将它们集成在一起,但这只是我的看法。希望这能为你清除一些事情。