




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、如何配置jetTemplate首先需要把ViewResolver和View配置好: 指明使用的ViewResolver,和相应匹配的后缀,同时需要拿到一个配置文件:jetx.import.classes = jetbrick.template.samples.dao.*, jetbrick.template.samples.model.*jetx.autoscan.packages = jetbrick.template.samplesjetx.template.loaders = $loader$loader = jetbrick.template.loader.ServletResourceLoader$loader.root = /$loader.reloadable = true这个配置文件中指明了需要导入一些类:在模板中,如果要用到一些其他的 Class, 那么可以先 import 进来,这样就可以在模板中使用短名字,比如Date而不是java.util.Date。和自动扫描的包:如果我们实现了大量的扩展 methods, functions 或者 tags, 那么我们就要进行大量的配置,并且每次增加新的扩展 Class,我们就要修改配置文件,不是很方便。为了解决这个问题,我们提供了指定扫描用户自定义的扩展 Class,扫描的内容是: 方法扩展 Methods 全局函数 Functions 全局标签 Tags我们需要在这里配置要扫描的包名,这样JetEngine就会在初始化的时候,到指定的包下面进行自动扫描(也会扫描子包中的 class),自动将扫描到的扩展 Class 注册到JetEngine。支持定义多个扫描的包。jetx.autoscan.packages = app.methods, app.functions, app.tags要让JetEngine知道某个 Class 是扩展 Class,那么就需要在这个 Class 上面加入下面某个 Annotation JetAnnotations.Methods JetAnnotations.Functions JetAnnotations.Tags拓展方法:可以非常好的进行格式化处理和一些小的模板处理。方法 Methods我们知道一个 Java Class 的 所有 methods 都是定义在同一个 class 文件中的,不能在其他地方进行动态扩展。但是一些其他动态语言却支持在 Class 外部为这个 Class 增加一些方法。比如: JavaScript 的 prototype 机制 Groovy 的 metaClass 机制jetbrick-template也在这里带给大家强大的动态方法扩展机制。如: $123.asInt() $new Date().format(yyyy-MM-dd) $1, false, null.asJson()注意:如果Class已经定义了同名方法,则优先使用Class定义的方法。但是扩展方法支持方法重载 (Overrload)。1. 定义扩展方法语法:public static Object method_name ( Object object, args . ) 方法签名必须是public和static 方法的第一个参数类型必须是要扩展的 Object, 其余参数自定义 允许定义相同名字的 method,但是方法参数不一样 (Overload) 支持可变参数 (VarArgs)示例:对String.class进行扩展package jetbrick.demo;public class StringMethods public static String link(String text, String url) return + text + ; 2. 注册扩展方法用户自定义的扩展方法必须注册到JetEngine中才能使用。注册方法有 3 种途径: API 动态注册JetEngine engine = .GlobalResolver resolver = engine.getGlobalResolver();resolver.registerMethods(StringMethods.class); 在配置文件中注册 pertiesjetx.import.methods = jetbrick.demo.StringMethods 自动扫描注册o 配置扫描路径jetx.autoscan.packages = jetbrick.demoo 为 Class 增加扫描JetAnnotations.MethodsJetAnnotations.Methodspublic class StringMethods . 3. 在模板中使用扩展方法模板:$BAIDU.link(/)输出结果:BAIDU4. 在扩展方法中获取 InterpretContext 上下文要获取InterpretContext对象,可以通过InterpretContext.current()方法获取当前 Thread local context 关联的InterpretContext对象。JetAnnotations.Methodspublic class UserInfoMethods public static String isOnline(UserInfo user) InterpretContext ctx = InterpretContext.current(); HttpSession session = (HttpSession) ctx.getValueStack().getValue(JetWebContext.SESSION); return session.getAttribute(user_ + user.getId() != null; 模板范例:#define(UserInfo user)$user.isOnline()二、model and viewRequestMapping(/users)public String users(ModelMap modelMap) modelMap.put(userlist, DaoUtils.getUserList(); return users;我们发现在这一块基本上没有什么区别,把数据对象放在map中,在后面的页面就可以帮我们完成整个的处理。返回值表示对应的html文件。这一块没有什么问题。这一块非常方便。三、页面的布局 jetbrick-template samples ID 姓名 邮箱 书籍 #for(UserInfo user: userlist) $user.id $user.nam
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论