用JavaServer Faces开发Web应用(4)
来源:互联网 发布:网络犯罪有哪些 编辑:程序博客网 时间:2024/05/22 16:53
6、事件处理。
下一步就是写事件处理器程序用来响应组件事件(诸如,选择了一个多选的选项或者点击一个按钮提交一个表单等等)。对于简单的应用,你还需指明当一个表单被提交或者访问一个超级连接时,哪一个页面会被访问。你可以实现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
<HTML>
<HEAD> <title>Hello</title> </HEAD>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<body bgcolor="white">
<f:use_Faces>
<h:form id="responseform" formName="responseform">
<h2>Hello, <h:output_text id="userLabel"
modelReference="UserNameBean.userName" /> </h2>
<p>
</h:form>
</f:use_Faces>
</HTML>
<未完待续>
其余部分请参考:
http://www.csdn.net/develop/read_article.asp?id=18705 用JavaServer Faces开发Web应用(1)
http://www.csdn.net/develop/read_article.asp?id=18707 用JavaServer Faces开发Web应用(2)
http://www.csdn.net/develop/read_article.asp?id=18709 用JavaServer Faces开发Web应用(3)
http://www.csdn.net/develop/read_article.asp?id=18712 用JavaServer Faces开发Web应用(5)
- 用JavaServer Faces开发Web应用(4)
- 用JavaServer Faces开发Web应用(4)
- 用JavaServer Faces开发Web应用(1)
- 用JavaServer Faces开发Web应用(2)
- 用JavaServer Faces开发Web应用(3)
- 用JavaServer Faces开发Web应用
- 用JavaServer Faces开发Web应用(1)
- 用JavaServer Faces开发Web应用(5)(完)
- JavaServer Faces 技术使Web应用程序开发变得更容易
- JavaServer Faces技术与应用
- Developing Web Applications with JavaServer Faces
- 使用JavaServer Pages2.0开发Web应用
- javaserver faces
- 使用 Java Persistence API 与 JavaServer Faces 开发 Web 应用程序(转)
- JDeveloper使用EJB,JPA,JavaServer Faces技术开发Web应用程序实例
- JavaServer Faces 2.2 requires Dynamic Web Module 2.5 or newer
- JavaServer Faces 2.2 requires Dynamic Web Module 2.5 or newer
- JavaServer Faces 2.0 requires Dynamic Web Module 2.5 or newer.
- windows下的grub安装
- 一段代码
- SQL Server 2000中的触发器使用
- 郎咸平:我始终在坚守自己的学术信仰(自己想做保留)
- 用JavaServer Faces开发Web应用(1)
- 用JavaServer Faces开发Web应用(4)
- jive setup tips
- Jive笔记3----Jive2.1.1 License保护原理分析
- AJAX请求并发问题
- Jive笔记5--为什么有时候ThreadID是不连续的
- Jive笔记6 --Database Package下面的暗黑世界
- AOP能做什么?
- 使flash不保存在IE缓存中!实时更新!
- 你知道数据大小吗?--不要花太多的功夫来隐藏类的成员