用JavaServer Faces开发Web应用(4) (转)[@more@]

6、事件处理。

XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

下一步就是写事件处理器程序用来响应组件事件(诸如,选择了一个多选的选项或者点击一个按钮提交一个表单等等)。对于简单的应用,你还需指明当一个表单被提交或者访问一个超级连接时,哪一个页面会被访问。你可以实现ApplicationHandler 这个接口达到这个目的。下面的代码段显示了一个例子。这个例子中,我要看看FormEvent是不是index.JSP中Submit按钮触发的。如果是, 组件树ID就会设置为与index.jsp页面相关联的组件树的ID。

代码5: BasicApplicationHandler.Java

import java.util.SortedMap;

import javax.faces.FacesException;

import javax.faces.component.UIComponent;

import javax.faces.context.FaceSCOntext;

import javax.faces.tree.Tree;

import javax.faces.tree.TreeFactory;

import javax.faces.FactoryFinder;

import javax.faces.lifecycle.ApplicationHandler;

import javax.faces.event.FormEvent;

import javax.faces.event.FacesEvent;

import javax.faces.event.CommandEvent;

import com.sun.faces.RIConstants;

public class BasicApplicationHandler implements ApplicationHandler{

public boolean processEvent(FacesContext context, FacesEvent facesEvent) {

if (!(facesEvent instanceof FormEvent) &&

!(facesEvent instanceof CommandEvent)) {

return true;

}

boolean returnValue = false;

String treeId = null;

if (facesEvent instanceof FormEvent) {

FormEvent formEvent = (FormEvent) facesEvent;

if (formEvent.getCommandName().equals("submit")) {

treeId = "/hello.jsp";

}

returnValue = true;

} else if (facesEvent instanceof CommandEvent) {

CommandEvent commandEvent = (CommandEvent)facesEvent;

UIComponent c = commandEvent.getComponent();

if (c.getAttribute("target") != null) {

treeId = (String)c.getAttribute("target");

returnValue = true;

}

}

if (null != treeId) {

TreeFactory treeFactory = (TreeFactory)

FactoryFinder.getFactory(FactoryFinder.TREE_FACTORY);

context.setTree(treeFactory.getTree(context,treeId));

}

return returnValue;

}

}

7、开发上下文监听程序。

如果你仔细看过部署描述文件web.xml,你会注意我声明了一个servlet上下文监听程序(BasicServletContextListener)。当应用启动时,servlet容器会创建一个servlet context listener的实例,并调用它的contextInitialized 方法;当应用关闭的时候,会调用它的contextDestroyed 方法。下面是一个servlet context listener的例子。

代码6: BasicServletContextListener.java

import javax.servlet.ServletContextListener;

import javax.servlet.ServletContextEvent;

import javax.faces.FactoryFinder;

import javax.faces.lifecycle.LifecycleFactory;

import javax.faces.lifecycle.Lifecycle;

import javax.faces.lifecycle.ApplicationHandler;

public class BasicServletContextListener implements ServletContextListener {

public BasicServletContextListener() {

}

public void contextInitialized(ServletContextEvent e) {

ApplicationHandler handler = new BasicApplicationHandler();

LifecycleFactory factory = (LifecycleFactory)

FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY);

Lifecycle lifecycle =

factory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE);

lifecycle.setApplicationHandler(handler);

}

public void contextDestroyed(ServletContextEvent e){

}

}

8、完成响应页面。

当index.jsp中的表单被提交后,应用处理器程序启动,然后用户会被转发到响应页面hello.jsp。代码如下:

Code Sample 7: hello.jsp

Hello

taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

RM id="responseform" formName="responseform">

Hello, modelReference="UserNameBean.userName" />

其余部分请参考:

.NET/develop/read_article.ASP?id=18705">http://www.csdn.net/develop/read_article.asp?id=18705 用JavaServer Faces开发Web应用(1)

Java Server Faces_用JavaServer Faces开发Web应用(4) (转)相关推荐

  1. java faces,用JavaServer Faces开发Web应用(3) (转)

    用JavaServer Faces开发Web应用(3) (转)[@more@] 构建你自己的应用 :namespace prefix = o ns = "urn:schemas--com:: ...

  2. [Axis2与Eclipse整合开发Web Service系列之三] 服务端返回值

    前言 在前面的三篇中 [Axis2与Eclipse整合开发Web Service系列之一] 生成Web Service Client(将WSDl 转化成 Java代码) [Axis2与Eclipse整 ...

  3. Java Server Faces_JSF ( JavaServer Faces ) 介绍

    javaServer Pages(JSF) 在 Java 的 WEB 编程中已经被认为是下一个重大的事件.通过 JSF ,你可以在网页上使用 WEB 组件,来捕捉用户行为产生的事件.不远的将来,Jav ...

  4. java server faces

    引用:http://baike.baidu.com/view/3420290.htm 材料参考:http://wenku.baidu.com/view/83b1f8659b6648d7c1c74667 ...

  5. Java Server Faces(JSF)历险(一)

    从今天开始研究JSF(Java Server Faces),JSF作为最新的MVC框架,得到了sun等业界技术领袖的支持,我相信JSF必然会超越Struts,Tapestry成为主流开发技术.以后的系 ...

  6. Java:2022年最流行的Web开发Java框架

    在2022年,你可以看到Java仍然是世界上最流行的编程语言之一.Java不仅是最流行的计算机编程语言之一,它还是一个平台.平台是帮助创建和运行用任何编程语言编写的程序的环境.此外,已经设计了各种框架 ...

  7. 为 Python Server Pages 和 Oracle 构建快速 Web 开发环境。

    为 Python Server Pages 和 Oracle 构建快速 Web 开发环境. 为 Python Server Pages 和 Oracle 构建快速 Web 开发环境. - 在水一方 - ...

  8. 为 Python Server Pages 和 Oracle 构建快速 Web 开发环境

    作者:Przemyslaw Piotrowski 通过可靠的 Oracle 数据库 10g.可伸缩的 Apache Web 服务器以及直观的.面向对象的 Python 编程语言学习高级 Web 编程. ...

  9. java jdk 1.8 配置_Java开发环境jdk 1.8安装配置方法(Win7 64位系统/windows server 2008)...

    什么是jdk jdk是什么呢?jdk的是java development kit的缩写,意思是java程序开发的工具包.也可以说jdk是java的sdk. 目前的JDK大致分三个大版本: Java S ...

最新文章

  1. JS实现图片放大查看
  2. ulua/tolua中timer.lua和event.lua的使用(Luaframework)
  3. java GUI怎么输入_在Swing中创建Java GUI以进行表单输入
  4. Linux创建、删除文件和文件夹命令
  5. python中classmethod与staticmethod的差异及应用
  6. Spring中事务的使用、抽象机制及模拟Spring事务实现
  7. 项目代码matlab
  8. FFmpeg滤镜代码级分析
  9. c语言二级安卓软件,C语言二级考试题库安卓下载-C语言二级考试题库APK下载 - Iefans...
  10. 基站定位php,基于Python的移动联通基站接口调用代码实例
  11. 新计算机装系统找不到鼠标,新主板装win7系统不能使用usb鼠标键盘的解决方法(完美)...
  12. python中bytearray函数_Python bytearray() 函数
  13. 【DIY】手把手教你爆改一台手机制作掌上游戏机
  14. windows10下文件被占用,不能删除
  15. 火车头采集下载图片的位置和URL地址的更换
  16. 对称加密之流密码RC4
  17. Mac 开机密码忘记
  18. 荣耀4c android版本,华为荣耀4C从EMUI3.0安卓4.4升级到4.0 安卓版本升级到6.0,荣耀畅玩4C—升级教程。...
  19. C语言试题115之两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定 比赛名单。有人向队员打听比赛的名单。a 说他不和 x 比,c 说他不和 x,z 比,请
  20. Java的方式生成条形码

热门文章

  1. mplayer undefined reference to `av_lzo1x_decode''render_one_glyph'
  2. 搭建hadoop集群从裸机开始
  3. FreeMarker生成复杂word(包含图片,表格)
  4. oracle+omf+格式,Oracle OMF管理数据文件
  5. android tv box ---- 插入u盘直接播放指定文件夹中的视频
  6. Keil的AC6与AC5中文手册
  7. Oculus/VR新手入门指南
  8. 2021年职业病防治法宣传周宣传资料
  9. 蘑菇街防重复请求处理的实践与总结
  10. javaSE I/O流(二)—— 各种各样的流