




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSF2.1 代码示例(包含国际化,类型转换,验证器,监听器等)自己做的一个登录的例子,涵盖了jsf中的国际化,类型转换,验证器,监听器等学了jsf1.2的流程 ,现在该学jsf2.1了, 废话少说,上代码.(文中如有错误之处,还请高手赐教)1.首先去官网下载jsf包(从Mojarra项目中找),copy到lib下,这个不用说了吧(jsf1.2是jsf-api.jar和jsf-impl.jar; jsf2.1已经合并成一个.jar了:javax.faces-2.1.11.jar)使用JSF 还需要其它加包的支持,这些都是开源公共接口和类库:commons-beanutils.jarcommons-collections.jarcommons-digester.jarcommons-logging.jarjstl.jarstandard.jar2,跟我一起创建人生中第一个jsf程序吧,创建一个web程序,我创建的叫jsf_demo2.1,修改WEB-INF/web.xml在web.xml中增加FacesServlet,如: Faces Servletjavax.faces.webapp.FacesServlet1 Faces Servlet /faces/* *.xhtml jsf1.2 用的是*.faces,不用纠结这个你懂的 3.创建个登录页面index.xhtml (JSF2.x采用W3C的xhtml规范,是一个严格的xml规范,组件树渲染不再需要如jsp一样编译成class文件后再运行,可以直接渲染,而大大提升了渲染速度,整体性能比jsp应该会提升不少。)在熟看这个页面的时候,你需要去了解和学习下jsf的一些标签知识。index.xhtml开头引入标签库,也是一种规范,(在JSF2.X中引入了全新的界面表现模型Facelets,可以方便的实现自有组件定制和页面模版化。既强化了JSF提出以来的组件式开发思想,又简化了自有组件的开发。从Tapestry吸收来的模版方式不仅可以让开发工程师像搭积木一样组合一个页面,更可以搭好架子后只在相关页面中只修改需要改变的部分。Facelets还有一大好处,就是将所有java代码从页面标签中移出,让分工更明细了,分工合作本来就是人类发展的一大基石,在这儿也体现了)接下来的部分:(这里我给初学者重点说明下:-高手见笑了) / 可以设置国际化语言My first JSF2.1 /读取国际化资源文件 /这个标签是显示打印的,value 是资源文件中的内容 /f:convertDateTime 是jsf标准的转换器 ,pattern就是你要转化的格式,比如 pattern=yyyy/MM/dd ,jsf还提供自定义转换器,这里不作详细说明。 / 这里可以显示异常提示信息,并设置格式等:/ required=true 用过struts2校验器或jquery校验器的童鞋不难理解,这个是jsf中的校验:必填,不能为空!:!-/jsf标准校验器 “最少为6个字符”/jsf也很灵活,提供自定义校验器,这里就是我自定义的校验器,用于验证密码的,下面有详解:/这个就是一个提交按钮了,action=“要提交的地方” 这里要提交到welcome.xhtml,就是希望登录成功后跳到welcome.xhtml。如果#user.outcome的值是welcome,也就是说action=welcome的时候,页面就到welcome.xhtml页面了,懂了吧;当然有时候用到转发,jsf中是这样的:action=xxx?faces-redirect=true。讲讲actionListener吧,jsf是基于事件驱动的,这个事件(指点击按钮)对应的处理方法就是(actionListener=#user.verify_event )名称为“user”的这个Bean中的verify_event方法,这个方法在下文找!- /对于JSF 的input 与command 组件,都有一个immediate 属性, 如果immediate=true , 则指定的事件就成为立即事件。当按下这个按钮后, JSF 套用请求值之后会立即处理指定的actionListener, 而不再进行验证、更新模型值,简单的说,就这个程序来说, 您在输入字段与密码字段中填入的值,不会影响您的与user.password;如果您要注册多个ActionListener - 以上初学着 或许有很多疑惑之处,以上出现的user 我们可以看做成一个实体,user. 就是取实体中的某个属性!4.国际化资源文件 /读取国际化资源文件 想懂这个 你要先看看资源文件message_en_US.properties 英文:title=JSF2.1testname=namepwd=passwordsubmit=submitlangunge=Englishhello=Hellowelcome=welcome to use JavaServer Facesdate=datemessage_zh_CN.properties 中文:title=JSF2.1u793Au4F8Bname=u540Du5B57pwd=u5BC6u7801submit=u63D0u4EA4langunge=u4E2Du6587hello=u60A8u597Dwelcome=u6B22u8FCEu4F7Fu7528JavaServer Facesdate=u65E5u671F 默认根据系统语言环境读取对应国际化资源文件 这个就是显示资源文件对应语言内容了5.好了,我们看看实体内容吧:package com.dengyang.demo;import java.util.Date;import java.util.List;import java.util.Map;import javax.faces.bean.ManagedBean;import javax.faces.bean.SessionScoped;import javax.faces.event.ActionEvent;import javax.faces.event.ValueChangeEvent;ManagedBean(name=user) /jsf2.x使用的是注解方式,会spring3.x的都知道 注解现在很流行,name值就是我们页 面引用的user.xxx ,不难懂吧SessionScoped /作用域范围 jsf1.2这些都是配置文件中的public class UserBean private String name=dengyang; private String password; private String msg; private Date date = new Date(); private List array; private Map map; private String locale; private String outcome;public String getName() return name;public void setName(String name) = name;public String getPassword() return password;public void setPassword(String password) this.password = password;public String getMsg() return msg;public void setMsg(String msg) this.msg = msg;public Date getDate() return date;public void setDate(Date date) this.date = date;public List getArray() return array;public void setArray(List array) this.array = array;public Map getMap() return map;public void setMap(Map map) this.map = map;public String getLocale() if(locale = null)locale = zh_CN;return locale;public void setLocale(String locale) this.locale = locale;/* * 值变事件 页面中 * param e方法的名字对应 valueChangeListener=#user.changeLocale */public void changeLocale(ValueChangeEvent e) if(locale.equals(zh_CN)locale = en_US;elselocale = zh_CN;/* * 动作事件 对应页面中: * param e */public void verify_event(ActionEvent e)if(!name.equals(邓洋)|!password.equals(123456)msg =名字或密码错误!;outcome = index;elseoutcome = welcome;public String outcome() return outcome;自定义校验器:/* * 自定验证器 * * author dengyangyang * */FacesValidator(value=pwdValidator) /对应页面public class MyValidator implements Validator /* 还可以把以下验证方法写在实体Bean中* 页面这样调用:* */public void validate(FacesContext context, UIComponent component,Object object) throws ValidatorException String password = (String) object;if (password.length() 8) Fac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年第十三届贵州人才博览会省委金融办所属事业单位人才引进1人考前自测高频考点模拟试题及答案详解(典优)
- 2025春季北方华创招聘考前自测高频考点模拟试题及参考答案详解
- 2025广东珠海市金湾区招聘公办中小学编制内教师160人考前自测高频考点模拟试题及答案详解(名师系列)
- 2025广西广西民族大学招聘1人(国际合作与交流处外事科工作人员)考前自测高频考点模拟试题附答案详解(完整版)
- 2025广西钦州市钦南区林业局招聘1人模拟试卷附答案详解(典型题)
- 安全培训教师会课件
- 安全培训教导员介绍课件
- 2025贵州铜仁职业技术学院引进人才57人考前自测高频考点模拟试题参考答案详解
- 2025年河北石家庄协和医学中等专业学校公开招聘教师20名模拟试卷及答案详解(全优)
- 2025年延吉市党史地方志办公室招聘公益性岗位的模拟试卷及答案详解(网校专用)
- 粮食代烘干协议书
- 吊车装卸钢筋合同协议书
- 华为光芯片笔试题及答案
- 应急预案鲁西化工集团股份有限公司煤化工二分公司突发环境事件应急预案
- 监护协议书范本格式
- 《当代艺术流派》课件
- 循环水池清淤施工方案
- 2025年人力资源制度:【年终奖】员工超产奖金计算表
- 建设6英寸硅基功率半导体晶圆生产线项目资金申请报告
- 氧化还原滴定法
- 2025年江苏南京企业全景分析报告
评论
0/150
提交评论