Jfinal中的render
2016-03-29 16:02
239 查看
jfinal中的render就是渲染的意思。
可以将运行的结果,渲染为网页送给brower,也可以渲染一些静态内容。
1.渲染的视图类型
(1)类型
①根据路径
根据路径就是说它们的参数都是renderXXX(String view)
这个view指出,访问该文件的具体内容。
这种类型有:Freemarker、Jsp、Velocity、Xml
其中前三种是配置的一种渲染方法,可以用来渲染各种格式,然后用view指出路径来。
②根据内容
根据内容就是,填写的参数不是表示某个文件的路径,
而是直接填写具体的内容,而Json也可以是一个json对象等多种方式。而File一般用于文件下载。
Text、Json、File、Html、JavaScript
③直接render
直接render默认就是使用RenderFreemarker。
可以通过在JFinalConfig.configConstant(Constants constants) 配 置 中 的 constants.setViewType(ViewType)来设定。
④自定义render
比如:render(new XXXXRender())
这里就是要自己定义一个XXXX类,来进行自定义的渲染。然后新建一个类的实例。
比如对于IE这种不支持Ajax的,就可以自定义一个类来实现特定的功能。
(2)配置
像三大渲染类型这种freemarker、jsp、velocity都需要再导入对应的jar包,包的版本在jfinal-all里面都有。
如果使用了其中一种又没有导入jar包的话,直接上图。
![](http://img.blog.csdn.net/20160329154135924)
![](http://img.blog.csdn.net/20160329154150049)
居然不是classNotFound,总之坑爹。
2.渲染路径
前面提到freemarker、jsp、velocity、xml都是通过路径,来指定某文件render给客户端。
这里的路径有两种
(1)绝对路径
/aaa/bbb/ccc.html
这个最开始的/表示的是,webroot或者webapp这个web的根路径。
上面的语句就表示,webapp文件夹下面的aaa/bbb/ccc.html文件。
(2)相对路径
①BaseViewPath
在configConstant里面配置。
②routePath
在configRoute里面配置。
③randerPath
在具体render的时候配置。
假如我的配置是
①me.setBaseViewPath("/WEB-INF/fcl");
②me.add("/", com.TestController.class, "test");
③render("content.html");
那么最终,我要呈现的文件地址为/WEB-INF/fcl/test/content.html
3.绕过jfinal直接由servlet container呈现
凡是采用controller里面的action render出来的都是使用了jfinal的。
如果要跳过jfinal,可以在地址栏中直接敲入静态页面的地址。
格式为host/aaa/bbb/ccc.html
表示,host为主机地址,然后与上面是一致的。这个时候会通过servlet container直接访问html文件
我这里的servlet container是jetty,而且我没有它的jsp扩展包,所以当访问jsp文件的时候,会是如图
![](http://img.blog.csdn.net/20160329155619303)
解决办法有两种:
①加载jetty的jsp jar包。不过这里我也不知道具体哪个版本的合适。因为jfinal的这个jetty是特殊定制的。
②不要越过jfinal,不要在地址栏里直接访问静态文件,而是采用jfinal的render来渲染这个页面。
可以将运行的结果,渲染为网页送给brower,也可以渲染一些静态内容。
1.渲染的视图类型
(1)类型
①根据路径
根据路径就是说它们的参数都是renderXXX(String view)
这个view指出,访问该文件的具体内容。
这种类型有:Freemarker、Jsp、Velocity、Xml
其中前三种是配置的一种渲染方法,可以用来渲染各种格式,然后用view指出路径来。
②根据内容
根据内容就是,填写的参数不是表示某个文件的路径,
而是直接填写具体的内容,而Json也可以是一个json对象等多种方式。而File一般用于文件下载。
Text、Json、File、Html、JavaScript
③直接render
直接render默认就是使用RenderFreemarker。
可以通过在JFinalConfig.configConstant(Constants constants) 配 置 中 的 constants.setViewType(ViewType)来设定。
④自定义render
比如:render(new XXXXRender())
这里就是要自己定义一个XXXX类,来进行自定义的渲染。然后新建一个类的实例。
比如对于IE这种不支持Ajax的,就可以自定义一个类来实现特定的功能。
(2)配置
像三大渲染类型这种freemarker、jsp、velocity都需要再导入对应的jar包,包的版本在jfinal-all里面都有。
如果使用了其中一种又没有导入jar包的话,直接上图。
居然不是classNotFound,总之坑爹。
2.渲染路径
前面提到freemarker、jsp、velocity、xml都是通过路径,来指定某文件render给客户端。
这里的路径有两种
(1)绝对路径
/aaa/bbb/ccc.html
这个最开始的/表示的是,webroot或者webapp这个web的根路径。
上面的语句就表示,webapp文件夹下面的aaa/bbb/ccc.html文件。
(2)相对路径
①BaseViewPath
在configConstant里面配置。
②routePath
在configRoute里面配置。
③randerPath
在具体render的时候配置。
假如我的配置是
①me.setBaseViewPath("/WEB-INF/fcl");
②me.add("/", com.TestController.class, "test");
③render("content.html");
那么最终,我要呈现的文件地址为/WEB-INF/fcl/test/content.html
3.绕过jfinal直接由servlet container呈现
凡是采用controller里面的action render出来的都是使用了jfinal的。
如果要跳过jfinal,可以在地址栏中直接敲入静态页面的地址。
格式为host/aaa/bbb/ccc.html
表示,host为主机地址,然后与上面是一致的。这个时候会通过servlet container直接访问html文件
我这里的servlet container是jetty,而且我没有它的jsp扩展包,所以当访问jsp文件的时候,会是如图
解决办法有两种:
①加载jetty的jsp jar包。不过这里我也不知道具体哪个版本的合适。因为jfinal的这个jetty是特殊定制的。
②不要越过jfinal,不要在地址栏里直接访问静态文件,而是采用jfinal的render来渲染这个页面。
相关文章推荐
- java函数参数传参
- UVA 11552 Fewest Flops 【区间dp】
- 支付宝通知页面notify_url、返回页面return_url
- iOS post一个json字符串到服务器 评论
- linux学习基础之1.0---shell的常见指令
- Eclipse下用Gradle 打包Android 程序
- sqlserver查询指定树形结构的所有子节点
- 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root
- 终极瘦身指南
- The minimum depth The maximum path sum path sum II
- 精华阅读第 10 期 |解开阿尔法狗(AlphaGo)人工智能的画皮
- 利用 Composer 一步一步构建自己的 PHP 框架(一)——基础准备
- VMware VirtualCenter Server Service服务启动失败
- 计算两个时间戳间隔时间, (可以用于倒计时
- (七)RxJava定时器:timer
- Android studio 制作aar 使用Gradle发布项目到JCenter仓库
- Oracle学习(四)----分组函数
- Struts2+jQuery+JSON 实现输入关键字后提示框显示数据
- Hive学习之六 《Hive进阶— —hive jdbc》 详解
- Spring MVC 笔记及简单了解