用JavaServer Faces開發Web應用(4) (轉)
6、事件處理。
:namespace prefix = o ns = "urn:schemas--com::office" />
下一步就是寫事件用來響應事件(諸如,選擇了一個多選的選項或者點選一個按鈕提交一個表單等等)。對於簡單的應用,你還需指明當一個表單被提交或者訪問一個超級連線時,哪一個頁面會被訪問。你可以實現ApplicationHandler 這個介面達到這個目的。下面的程式碼段顯示了一個例子。這個例子中,我要看看FormEvent是不是index.中Submit按鈕觸發的。如果是, 元件樹ID就會設定為與index.jsp頁面相關聯的元件樹的ID。
程式碼5: BasicApplicationHandler.
import java.util.SortedMap;
import javax.faces.FacesException;
import javax.faces.component.UIComponent;
import javax.faces.context.Facentext;
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、開發上下文程式。
如果你仔細看過部署描述.xml,你會注意我宣告瞭一個上下文監聽程式(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,
modelReference="UserNameBean.userName" />
modelReference="UserNameBean.userName" />
其餘部分請參考:
/develop/read_article.?id=18705">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)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958205/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用JavaServer Faces開發Web應用(3) (轉)JavaServerWeb
- 使用JavaServer Pages2.0開發Web應用 (轉)JavaServerWeb
- JavaServer Faces Note(1)JavaServer
- JavaServer Faces Note(2)JavaServer
- 利用ASP開發Web應用 (轉)Web
- 開發Web應用Web
- 用AJAX開發智慧Web應用程式之基礎篇(轉)Web
- 用Servlet開發企業級三層Web應用(一) (轉)ServletWeb
- 讀了《JavaScript Web 應用開發》JavaScriptWeb
- WEB應用開發中的ServletWebServlet
- 急聘JAVA Web應用開發高手JavaWeb
- Node助力Web應用開發——在新的開發平臺,打造高效能Web應用Web
- 開發Web應用程式中Cookie使用的問題 (轉)WebCookie
- 關於WEB應用程式的列印元件開發初探 (轉)Web元件
- 開始使用 Python 開發 Web 應用PythonWeb
- Golang 入門系列(十三)用Beego開發web應用GolangWeb
- 用 Nginx + Lua(OpenResty) 開發高效能 Web 應用NginxRESTWeb
- Yeoman:Web 應用開發流程與工具Web
- Web應用的元件化開發(一)Web元件化
- Web應用的元件化開發(二)Web元件化
- Google Web應用開發指南第一章:什麼是Web應用?GoWeb
- 用AngularJS開發下一代Web應用AngularJSWeb
- VC開發應用程式答疑 (轉)
- 使用JAVA開發CORBA應用 (轉)JavaORB
- 開發Web應用為什麼要用TypeScript?WebTypeScript
- 使用 Flutter 開發簡單的 Web 應用FlutterWeb
- [譯] Rust 開發完整的 Web 應用程式RustWeb
- Web應用程式開發五步法Web
- Web應用開發的七項原則Web
- [應用案例]完美自適應WEB開發官網Web
- 學用Java Web Start 部署應用程式 (轉)JavaWeb
- ionic4+vue+cordova開發混合應用Vue
- Web應用開發中的幾個問題Web
- 提高Web應用程式開發的7個技巧Web
- 瞧,我們組的Web應用開發方式Web
- 移動裝置的Web應用程式開發----(事件和輸入) (轉)Web事件
- Oracle應用Linux開發C(轉)OracleLinux
- 【轉載】App Inventor 開發BLE應用APP