Java Server Faces(JSF)历险(二),事件响应
2005-12-09 13:20
459 查看
JSF生命周期
分为几个阶段:Restore View:当(重新)访问JSP的时候,重建server端组件树。Apply Request Value:将request parameters 复制到component submitted values。Process Validators:执行验证。Update Model Values:更新model数据:<h:inputText value="#{user.name}"/>Invoke Application:调用应用程序:Action。Render Response:渲染Response:保存状态并装载下一个视图。FacesContext.renderResponse()可以跳过其他阶段,直接到RenderResponse;
FacesContext.responseComplete()可以跳过所有阶段。
ValueChangeEvent
<h:selectOneMenu value="#{eventDemo.provinceId}" onchange[/b]=[/b]"submit()" [/b]valueChangeListener[/b]=[/b]"[/b]#{eventDemo.onProvincesChange}"[/b]> <f:selectItems value="#{eventDemo.provinces}"/> </h:selectOneMenu> |
/** * Value改变事件 * @param event instance of ValueChangeEvent */ public void onProvincesChange(ValueChangeEvent event) [/b]{ String pId = event.getNewValue().toString(); //修改provincesFlags以改变getProvinces()的输出结果 provincesFlags = Integer.valueOf(pId).intValue(); } |
<h:selectOneMenu value="#{eventDemo.provinceId}" onchange="submit()" valueChangeListener="#{eventDemo.onProvincesChange}" [/b]immediate[/b]=[/b]"true"[/b]> <f:selectItems value="#{eventDemo.provinces}"/> </h:selectOneMenu> |
/** * Value改变事件 * @param event instance of ValueChangeEvent */ public void[/b] onProvincesChange(ValueChangeEvent event) { String pId = event.getNewValue().toString(); //修改provincesFlags以改变getProvinces()的输出结果 provincesFlags = Integer.valueOf(pId).intValue(); //页面组件定义为immediate,调用renderResponse以跳过验证阶段 FacesContext ctx = FacesContext.getCurrentInstance(); [/b] ctx.renderResponse(); [/b] } |
ActionListener事件
在执行Action的同时执行,与Action的区别在于:ActiontListener[/b]可以获取页面信息,所以被用来处理与页面有关的事情;而Action[/b]可以调用业务逻辑并控制页面导航。[/b]调用Action Listener的代码:
<h:commandButton value="OK" action="#{eventDemo.demoAction}" actionListener="#{eventDemo.demoActionListener}"[/b]/> |
/** * 事件监听,用于处理与View事件有关的事情 * @param event */ public void [/b]demoActionListener(ActionEvent event) { //这里处理页面显示相关的代码 } |
事件标签
除了使用actionListener和valueChangeListener属性之外,还可以使用事件标签:<h:selectOneMenu value="#{eventDemo.provinceId}" onchange="submit()" valueChangeListener="#{eventDemo.onProvincesChange}" immediate="true"> <[/b]f:valueChangeListener [/b]type[/b]=[/b]"net.chinasam.samples.jsf.ValueChangeEventDemo"[/b]/>[/b] [/b] <f:selectItems value="#{eventDemo.provinces}"/> |
package[/b] net.chinasam.samples.jsf; import[/b] javax.faces.event.AbortProcessingException;import[/b] javax.faces.event.ValueChangeEvent;import[/b] javax.faces.event.ValueChangeListener; public[/b] class[/b] ValueChangeEventDemo implements[/b] ValueChangeListener[/b] { public[/b] void[/b] processValueChange[/b](ValueChangeEvent event) throws[/b] AbortProcessingException { System.out.println("DEMO"); } } |
阶段事件
<lifecycle> <phase-listener>net.chinasam.samples.jsf.PhaseEventDemo</phase-listener> </lifecycle> |
public void [/b]afterPhase(PhaseEvent event) { System.out.println(event.getPhaseId()); } public void [/b]beforePhase(PhaseEvent event) { System.out.println(event.getPhaseId());} public [/b]PhaseId getPhaseId() { return[/b] PhaseId.INVOKE_APPLICATION; } |
相关文章推荐
- Java Server Faces(JSF)历险(二),验证和转换
- Java Server Faces(JSF)历险(一)
- Java Server Faces Events And Listeners (JSF中的事件与监听器)
- Java Server Faces Events And Listeners (JSF中的事件与监听器)
- Java Server Faces(JSF)历险(一)
- JavaServer Faces (JSF)
- JSF(Java Server Faces)学习日记
- JavaServer Faces(JSF)学习笔记
- 读《JavaServer Faces 核心编程(第3版)》一书的记录—— 第 4 章 标准 JSF 标签——案例 personalData
- JSF技术介绍(JavaServer Faces Technology:chapter 9)《注:未完成》
- Java Server Faces (JSF) 的特点
- JavaServer Faces(JSF)全面掌握(之扫盲篇)
- JSF - Oracle Javaserver Faces 简介 — 什么是 JSF?
- JSF(JavaServer Faces) 介绍
- 读《JavaServer Faces 核心编程(第3版)》一书的记录—— 第 4 章 标准 JSF 标签——案例 javascript
- JavaServer Faces (JSF) vs Struts
- JavaServer Faces (JSF) vs Struts
- 如何建立高级JSF(Java Server Faces)图形组件
- JavaServer Faces JSF in Action
- JSF的MVC实现 (图例JavaServer Faces 的 MVC 实现)