JSF是一个新的基于MVC模型的web应用框架技术。在概念和特征方面,尤其是组件方面,超过了著名的Struts框架。而myfaces是Apache软件基金的一个项目,它实现了JSF框架。同样sun公司也有一个参考实现 JSF RI。但是myfaces比JSF RI提供了更多的组件和特征。

可以参考:http://myfaces.apache.org/index.html 

​​

开发基于JSF的web应用程序可以使用下列IDE(笔者已知):

myEclipse(Eclipse插件)  ,默认同时支持JSF RI 和myfaces

​​

Exadel(Eclipse插件)  默认支持JSF RI

​​

Java Studio Creator 默认支持JSF RI

oracle 的jDevelop 也支持JSF但是有自己的特色组件。

使用myfaces

myfaces官方的发行版本myfaces1.1.0中有四个jar包,分别 myfaces-api.jar,myfaces-impl.jar,tomahawk.jar,myfaces-all.jar。myfaces-all.jar包括了前三个jar包的所有

内容。myfaces-api.jar,其实是JSF RI。tomahawk.jar是包含了myfaces实现的特色组件,可以单独使用,在已经使用JSF的web应用程序中加入这个包就可以myfaces的组件,但是

无法使用myfaces的其他特征,如和struts-tiles结合。

笔者在myeclipse,tomcat5.0.28和jdk1.4.2中成功运行基于myfaces的web应用程序。并且没用了笔者以前提到的JSF中文输入乱码的问题。但是在tomcat5.5.9和JDK1.5update4中

没用调试成功,tomcat启动报错,页面无法显示。在web\lib下加入myfaces的jar包后,还要在web.xml中加入如下片断。

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <context-param>

    <param-name>javax.faces.CONFIG_FILES</param-name>

    <param-value>/WEB-INF/faces-config.xml</param-value>

  </context-param>

  <listener>

    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>

  </listener>

  <!-- 支持文件上传功能,程序没用文件上传功能,这个也就不需要了-->

  <filter>

        <filter-name>extensionsFilter</filter-name>

        <filter-class>

                org.apache.myfaces.component.html.util.ExtensionsFilter

        </filter-class>

        <init-param>

                <description>

                        Set the size limit for uploaded files. Format: 10 - 10

                        bytes 10k - 10 KB 10m - 10 MB 1g - 1 GB

                </description>

                <param-name>uploadMaxFileSize</param-name>

                <param-value>100m</param-value>

        </init-param>

        <init-param>

                <description>

                        Set the threshold size - files below this limit are

                        stored in memory, files above this limit are stored on

                        disk.

                        Format: 10 - 10 bytes 10k - 10 KB 10m - 10 MB 1g - 1 GB

                </description>

                <param-name>uploadThresholdSize</param-name>

                <param-value>100k</param-value>

        </init-param>

     <!--

        <init-param>

                <param-name>uploadRepositoryPath</param-name>

                <param-value>/temp</param-value>

                <description>Set the path where the intermediary files will be stored.

                </description>

        </init-param>

       -->

</filter>

<filter-mapping>

        <filter-name>extensionsFilter</filter-name>

        <url-pattern>*.faces</url-pattern>

</filter-mapping>

<filter-mapping>

        <filter-name>extensionsFilter</filter-name>

        <url-pattern>/faces/*</url-pattern>

</filter-mapping>

  <servlet>

    <servlet-name>Faces Servlet</servlet-name>

    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

    <load-on-startup>0</load-on-startup>

  </servlet>

  <servlet-mapping>

    <servlet-name>Faces Servlet</servlet-name>

    <url-pattern>*.faces</url-pattern>

  </servlet-mapping>


</web-app>

要在页面使用myfaces组件,请在页面中加入。

<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>