用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開發Web應用Web
- Golang 入門系列(十三)用Beego開發web應用GolangWeb
- 【轉】Docker部署Tomcat及Web應用DockerTomcatWeb
- [譯] Rust 開發完整的 Web 應用程式RustWeb
- 使用 Flutter 開發簡單的 Web 應用FlutterWeb
- 開發Web應用為什麼要用TypeScript?WebTypeScript
- [應用案例]完美自適應WEB開發官網Web
- 【轉載】App Inventor 開發BLE應用APP
- 《Flask Web開發 基於Python的Web應用開發實戰》簡評FlaskWebPython
- ionic4+vue+cordova開發混合應用Vue
- 用vscode開發vue應用VSCodeVue
- 自開發Web應用和SAPCustomerDataCloudIdentity服務的整合WebCloudIDE
- web開發安全框架中的Apache Shiro的應用Web框架Apache
- WEB例項:開發一個聊天室應用Web
- 使用SAP UI5 Web Components開發React應用UIWebReact
- 是否有應用onethink開發web的詳細教程Web
- V4L2應用程式開發(1)
- dotnet core使用開源元件FastHttpApi進行web應用開發元件ASTHTTPAPIWeb
- 《Flask Web開發:基於Python的Web應用開發實戰》學習筆記(二)FlaskWebPython筆記
- Maven Web 應用MavenWeb
- 用 React 結合 SAP UI5 Web Components 來開發 SAP Fiori 應用ReactUIWeb
- web開發實戰教程:Apache Shiro在web專案中的應用WebApache
- 用Spring Web Flow和Terracotta搭建Web應用SpringWeb
- 1.1.4 應用開發
- 用VS Code開發Vue應用Vue
- Vue.js + Tone.js 開發Web鋼琴應用Vue.jsWeb
- 基於springmvc+spring-data-jpa+dubbo開發web應用SpringMVCWeb
- JSON資料格式及其在WEB開發中的應用JSONWeb
- Gradio.NET 支援 .NET 8 簡化 Web 應用開發Web
- Python 如何開發高效漂亮的輕量級 Web 應用?PythonWeb
- Web | 淺談用Python進行Web開發WebPython
- ionic4 開發企業微信應用0
- 4 款“吃草”的開源應用
- 淺談canvas在web開發中的應用與優化CanvasWeb優化
- 以太坊和Metamask開發web應用時不再需要密碼Web密碼
- 漸進式web應用開發---promise式資料庫(五)WebPromise資料庫
- 在30天內學習漸進式Web應用開發Web
- web離線應用Web
- (資料科學學習手札119)Python+Dash快速web應用開發——多頁面應用資料科學PythonWeb