怎么用JavaServer Faces开发Web应用
导读:本文共2405字符,通常情况下阅读需要8分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 1、事件处理。XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />下一步就是写事件处理器程序用来响应组件事件(诸如,选择了一个多选的选项或者点击一个按钮提交一个表单等等)。对于简单的应用,你还需指明当一个表单被提交或者访问一个超级连接时,哪一... ...
目录
(为您整理了一些要点),点击可以直达。- (18): if (!(facesEvent instanceo
- (19): !(facesEvent instanceof Co
- (20): return true;
- (21): }
- (22): boolean returnValue = fals
- (23): String treeId = null;
- (24): if (facesEvent instanceof
- (25): FormEvent formEvent = (Fo
- (27): treeId = "/hello.jsp
- (28): }
- (29): returnValue = true;
- (30): } else if (facesEvent inst
- (32): UIComponent c = commandEve
- (33): if (c.getAttribute("t
- (34): treeId = (String)c.getAttr
- (35): returnValue = true;
- (36): }
- (37): }
- (38): if (null != treeId) {
- (39): TreeFactory treeFactory =
- (42): }
- (43): return returnValue;
- (44): }
- (46):2、开发上下文监听程序。
- (56): public BasicServletContext
- (57): }
- (60): LifecycleFactory factory =
- (62): Lifecycle lifecycle =
- (64): lifecycle.setApplicationHa
- (65): }
- (66): public void contextDestroy
- (67): }
1、事件处理。
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;
}
}
2、开发上下文监听程序。
如果你仔细看过部署描述文件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){
}
}
3、完成响应页面。
当index.jsp中的表单被提交后,应用处理器程序启动,然后用户会被转发到响应页面hello.jsp。代码如下:
Code Sample 7: hello.jsp
<%@ taglib="" uri="http://java.sun.com/jsf/html" prefix="h">
<%@ taglib="" uri="http://java.sun.com/jsf/core" prefix="f">
modelReference="UserNameBean.userName" />
怎么用JavaServer Faces开发Web应用的详细内容,希望对您有所帮助,信息来源于网络。