JSF 1.1到1.2迁移

时间:2010-11-30 12:08:31

标签: maven-2 jsf

我目前在 Apache Tomcat 6.0.13 上使用 JSF 1.1 maven 2。

我计划从JSF 1.1迁移到1.2。有人能指点我: - 最好使用什么JSF实现 - 这个实现是否可以在maven中央存储库中找到 - 我需要调整哪部分代码(我在我的项目中使用自定义标签,但除此之外它都是普通的JSF)

任何信息都会有所帮助...... Thanx!

[编辑1]:

嗯,它对我没用。无法从您指定的存储库下载依赖项。也许是因为这是 maven 1 存储库的链接。我正在使用以下pom设置:

        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>1.2</version>
            <type>jar</type>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/jsf-api.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>1.2</version>
            <type>jar</type>
            <scope>system</scope>
            <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/jsf-impl.jar</systemPath>
        </dependency>

我希望这种方法是正确的。如果某人有更友好的解决方案,请告知。感谢名单!

[编辑2]: 我从1.1改变了我的JSF jar后。到1.2,应用程序启动时发生以下错误:

java.lang.IllegalStateException: Application was not properly initialized at startup, could not find Factory: 
javax.faces.context.FacesContextFactory 

要修复此错误,需要在web.xml中添加其他侦听器:

    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>

1 个答案:

答案 0 :(得分:3)

查看以下发行说明,其中包含1.1到1.2的迁移指南 http://java.sun.com/javaee/javaserverfaces/docs/ReleaseNotes.html

JSF 1.2的maven2工件已经在位于http://http://repo1.maven.org/maven2的标准maven2存储库中找到了方法

JSF实施

http://repo2.maven.org/maven2/javax/faces/jsf-impl/1.2-b19/

JSF API

http://repo1.maven.org/maven2/javax/faces/jsf-api/1.2-b19/

因此,您不应在pom.xml或settings.xml

中设置任何特殊的存储库设置

依赖关系可以在pom中定义如下(1.2-b19是撰写本文时的最新版本):

    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>1.2-b19</version>
    </dependency>
    <dependency>
        <groupId>javax.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>1.2-b19</version>
    </dependency>

下面是一个完整的pom.xml,它应该包含启动JSF 1.2项目的基本依赖项

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ecs.sample.jsf</groupId>
    <artifactId>SampleJsfPom</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-api</artifactId>
            <version>1.2-b19</version>
        </dependency>
        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>1.2-b19</version>
        </dependency>
        <dependency>
            <groupId>com.sun.facelets</groupId>
            <artifactId>jsf-facelets</artifactId>
            <version>1.1.11</version>
        </dependency>
        <dependency>
            <groupId>commons-digester</groupId>
            <artifactId>commons-digester</artifactId>
            <version>1.7</version>
        </dependency>
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.7.0</version>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
                <version>2.5</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>