JSF学习笔记四

事件处理:
1.动作事件
Bean中方法verify(ActionEvent e)接受一个ActionEvent对象,jsp页面中如下编写:
<h:commandButton value="提交" actionListener="#{user.verify}" action="#{user.outcome}">

注册多个ActionListener:
LogHandle.java 和 VerifyHandle.java 都实现了ActionListener接口。我们使用<f:actionListener>标签向组件注册事件。如:
<h:commandButton value="提交" action="#{user.outcome}">
<f:actionListener type="com.zdx.LogHandle"/>
<f:actionListener type="com.zdx.VerifyHandle"/>
</h:commandButton>

2.即时事件
是指JSF试图组件在取得请求中该取得的值之后,立即处理指定的事件,而不再进行后续的转换器处理、验证器处理、更新模型值等流程。
基本流程:
1>重建试图
依客户端传来的session数据或服务器段上的session数据,组建JSF试图组件。
2>套用请求值
JSF试图组件各自获取请求中属于自己的值,包括旧的值和新的值。
3>执行验证
转换为对象并进行验证
4>更新模型值
更新bean或相关的模型值
5>唤起应用程序
唤起应用程序相关逻辑
6>绘制响应页面
对先前的请求处理完之后,产生页面以反应客户端执行结果。
对于动作事件来说,组件的动作事件是在套用请求值阶段就生成了ActionEvent对象,但相关的事件处理并不是马上进行,ActionEvent会被先列入队列,然后必须经过验证、更新阶段之后才处理队列中的事件。
我们可以设定组件在套用请求值之后立即被执行,并跳过后续的阶段,直接进入页面绘制以响应请求,对于JSF的input和command组件,都有一个immediate属性,只要将其设置为true就可以了。

3.值变事件
JSF输入组件的值改变后触发的事件,二种处理方式:
方法一:直接设置JSF输入组件的valueChangeListener属性
<h:selectOneMenu value="#{user.local}"
οnchange="this.form.submit();"
valueChangeListener="#{user.changeLocale}">
<f:selectItem itemValue="zh_CN" itemLabel="Chinese"/>
<f:selectItem itemValue="en" itemLabel="Englist"/>
</h:selectOneMenu>
方法二:实现javax.faces.event.ValueChangeListener接口。
在jsp页面中时使用<f:valueChangeListener type="com.zdx.MyValueChangeListener">标签

4.Phase事件
如果我们想在每个阶段前后扑捉这个事件以进行一些处理,我们可以实现javax.faces.event.PhaseListener接口,并向javax.faces.lifecycle.Lifecycle登记这个Listener,以在适当的时候通知事件的发生。必须实现的三个方法为:getPhaseId()、beforePhase()、afterPhase(),其中getPhaseId()传回一个PhaseId对象,代表Listener想要被通知的时机。
faces-config.xml中的配置如下:
<lifecycle>
<phase-listener>
com.zdx.myPhaseListener
</phase-listener>
</lifecycle>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值