疯狂

STANDING ON THE SHOULDERS OF GIANTS
posts - 481, comments - 486, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

JSF学习及应用一-(安装配置)

Posted on 2007-12-11 09:38 疯狂 阅读(3520) 评论(0)  编辑  收藏
JSFJavaServer Faces
 

JSFJAVA EE规范的一部分。它是:Java Web应用的用户界面框架。

l         JSF提供一套API以及标签库,用来创建页面表单以及复杂的界面元素

l         JSF使得编写表单提交的代码更加简单,这些代码可以响应那些不同的按钮提交,改变某些值或某些用户的选择等等

l         Managed beans:使得JSF简化了处理请求参数的方法

l         ELExpression Language):JSF有一套表达式语言用来访问java bean的属性以及集合元素等。

l         提供表单域类型转换以及验证

实现包

Apachemyfaces包是第一个开源的JSF实现。Myfaces有一些扩展的包,这些包是对JSF标准组件的扩充,可以协助我们更加快速的开发。Myfaces的扩展包括:

* Tomahawk myfaces提供了一系列远远超过规范规定的组件,这些组件可以兼容JSF1.1的参考实现,以及其它兼容JSF1.1规范的其它实现,当然也兼容myfacesJSF实现。

 

* Tobago:目标是提供一套基于JSF以及myfaces的良好设计的UI组件。Tobago不仅仅只是一套标签库。下面的几点让它与其它框架不同:

       - 无需HTML设计,聚焦于商业应用程序的开发。开发者可以将精力集中在用户界面上,而不是网页。

       - UI组件是对HTML的抽象,它不仅仅可以用于HTML页面,它的输出格式可以定制。

       - “主题”机制,使得可以很容易切换应用程序的外观。

       - 布局管理器可以自动排列组件,这就意味着无需使用HTML表格或其它技术来手工管理组件的布局。

 

* TrinidadJSF1.1的组件库

最新的myfaces包(版本是:1.1.1)是对JSF1.1规范的实现。

UI组件模型

JSF提供一套丰富灵活的组件模型,包括:

l         一套UIComponent类,定义UI组件的状态和行为。

l         呈现模型:定义如何用不同的方式来呈现组件

l         事件和监听器模型用来处理组件的事件。

l         转换模型:进行数据转换

l         验证模型:如何验证数据的合法性

 

UI组件类

比如UIFormUIInput等等,具体请参考文档。

组件呈现模型

不同的组件会有不同的呈现方式,同一个组件可能会有不同的呈现方式,比如UISelectOne,可以使用radio来呈现,也可以使用下拉框来呈现等。这些,都是通过呈现模型来定义的。

数据转换模型

当一个组件绑定到一个对象上之后,对于组件数据来说,总共有两个视图:

一个是模型视图:从这个角度去看,数据表现为java对象的类型,如int ,long,Date等等

一个是呈现视图:从这个角度去看,数据表现为一种可以被人读取或修改的形式。比如一个Date类型,可能被展现为一个yyyy-MM-dd格式的字符串,或者是三个字符串,分别代表年、月、日。

可以定义自己的转换器来转换数据。

事件与监听器模型

事件:值改变事件、动作事件、数据模型事件。

值改变:比如输入框的值被更改、选中了checkbox

动作事件:点击按钮或超链接

数据模型事件:UIData组件的一行被选中的时候触发这个事件。

导航模型


Navigation-rule,可以包含一个from-view-id和多个
navigation-case
每个navigation-case中,主要包括转向的页面。

From-view-id 当前页面

From-action:从哪个action方法

From-outcome:从哪个逻辑名称

To-view-id:转向哪个页面

 导航解决的问题是:从哪里到哪里。一句话来说就是:从from-view-id页面,当from-action方法被调用而且其返回值是from-outcome的时候,转向to-view-id页面。

 当导航发生的时候,即使没有调用action方法,但也会设置相应Backing Bean的属性(如果当前的Form域绑定了属性的话)。

 

安装JSF:下载http://java.sun.com/j2ee/javaserverfaces/download.html
 

1、在Eclipse中添加JSF的支持:

 
 

不要选择Install JSF Jars and packaged TLDS和Install JSF TLDs,因为我们要安装的版本跟Eclipse支持的版本不一样,我们用的是新的版本。在MyEclipse中添加支持的目的,是为了可以使用MyEclipse的页面导航设计器,避免我们手工编写页面导航的繁琐性。

点击完成即可。

 

myEclipse添加了JSF的配置文件和修改了web.xml文件!

为了跟新版本的myfaces配合,我们最好将web.xml中关于myfaces的配置全部按照下面的说明重新配置一遍:

我们的例子以myfaces的实现包以及Tomahawk的扩展包作为学习JSF的起点。

依赖包可以在tomahawk-examples-1.1.6-bin/myfaces-example-blank-1.1.6.war中找到。

 

2、添加依赖包:


 

将依赖包拷贝到WEB-INF/lib下面,如果已经有的包,可以选择覆盖或不覆盖,然后解决其中版本有冲突的包,将低版本的包去掉!

冲突的包主要包括:commons-collections,commons-fileupload,commons-lang,commons-logging

 

3、修改web.xml文件,添加如下内容:

l         指定配置文件的位置

 <context-param>

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

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

 </context-param>

l         Tomahawk的过滤器,用于解释那些扩展的功能

 <filter>

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

    <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>

 </filter>

 <filter-mapping>

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

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

 </filter-mapping>

 <filter-mapping>

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

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

 </filter-mapping>

l         MyfacesServlet

 <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>*.jsf</url-pattern>

 </servlet-mapping>

4、在WEB-INF目录下,添加faces-config.xml配置文件

<?xml version="1.0"?>

<!DOCTYPE faces-config PUBLIC

 "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"

 "http://java.sun.com/dtd/web-facesconfig_1_1.dtd" >

<faces-config>

   

</faces-config>

下一篇将结合MyEclipseJSF的支持来开发JSF的程序。

 


只有注册用户登录后才能发表评论。


网站导航: