JSF入门十七(值变事件)
2013-04-14 22:11
92 查看
本文参考 http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630
如果使用者改变了JSF输入组件的值后提交表单,就会发生值变事件(Value Change Event),这会丢出一个javax.faces.event.ValueChangeEvent对象,如果您想要处理这个事件,有两种方式,一是直接设定JSF输入组件的valueChangeListener属性,例如:
<h:selectOneMenu value="#{user.locale}" onchange="this.form.submit();" valueChangeListener="#{user.changeLocale}"> <f:selectItem itemValue="zh_CN" itemLabel="Chinese"/> <f:selectItem itemValue="en" itemLabel="English"/> </h:selectOneMenu>
为了模拟GUI中选择了选单项目之后就立即发生反应,我们在onchange属性中使用了JavaScript
,其作用是在选项项目发生改变之后,立即提交表单,而不用按下提交按钮;而valueChangeListener属性所绑定的user.changeLocale方法必须接受ValueChangeEvent对象
,例如:UserBean.java
package bruce.zhao; import javax.faces.event.ValueChangeEvent; public class UserBean { private String locale = "en"; private String name; private String password; private String errMessage; public void changeLocale(ValueChangeEvent event) { if(locale.equals("en")) locale = "zh_CN"; else locale = "en"; } public void setLocale(String locale) { this.locale = locale; } public String getLocale() { if (locale == null) { locale = "en"; } return locale; } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setPassword(String password) { this.password = password; } public String getPassword() { return password; } public void setErrMessage(String errMessage) { this.errMessage = errMessage; } public String getErrMessage() { return errMessage; } public String verify() { if(!name.equals("justin") || !password.equals("123456")) { errMessage = "名称或密码错误"; return "failure"; } else { return "success"; } } }
另一个方法是实现javax.faces.event.ValueChangeListener接口,并定义其processValueChange()方法,例如:SomeListener.java
package bruce.zhao; .... public class SomeListener implements ValueChangeListener { public void processValueChange(ValueChangeEvent event) { .... } .... }
然后在JSF页面上使用<f:valueChangeListener>标签,并设定其type属性,例如:
<h:selectOneMenu value="#{user.locale}" onchange="this.form.submit();"> <f:valueChangeListener type="bruce.zhao.SomeListener"/> <f:selectItem itemValue="zh_CN" itemLabel="Chinese"/> <f:selectItem itemValue="en" itemLabel="English"/> </h:selectOneMenu>
相关文章推荐
- JSF入门十六(即时事件)
- MC新手入门(十七)------ 鼠标点击事件
- MC新手入门(十七)------ 鼠标点击事件
- JSF入门十五(动作事件)
- JSF入门
- WPF快速入门1-XAML(window、Page、Application、属性、附加属性、特殊字符、保留空白、事件)
- JavaScript事件编程入门案例和对对象属性的遍历
- MySQL---数据库从入门走向大神系列(十七)-JavaWeb分页技术实例演示2
- 2013 duilib入门简明教程 -- 事件处理和消息响应 (17)
- JQuery入门——事件切换之toggle()方法
- JQuery入门――移除绑定事件unbind方法概述及应用
- JQuery入门总结(一)【DOM、选择器、方法事件】
- JSF入门例子,显示信息
- JSF入门实例
- 入门鼠标右键事件(快捷菜单)
- 微信小程序入门——视图层——视图、事件、模板
- Activiti错误结束事件入门实例
- MC新手入门(十八)------ 鼠标移进事件
- MC新手入门(二十一)------ 碰撞事件
- MC新手入门(二十一)------ 碰撞事件