JFinal开发8个常见问题

2014年的时候,学过一段时间的JFinal,当时主要是了解这个框架,研究了下源码,看懂了部分。

今天,2015年2月7日,弄了一下午的JFinal,把未来要上线的一个官网项目,迁移到了JFinal。

下面是8个最常见的问题总结,相关原始资料都给出了链接。

1.Can not create instance of class: demo.DemoConfig.

觉得应该是你的路径有问题, 打开你项目的java build path面板, 然后找到default output folder, 把这里的输出改为your_project/WebRoot/WEB-INF/classes。

参考资料:http://www.oschina.net/question/53137_124287

2.jfinal自带demo中如何在_layout.html加行<base href="${CONTEXT_PATH!}/"/>

按照如下步骤可解决问题:

在JFinalConfig中添加该ContextPathHandler,代码如下

public void configHandler(Handlers me) {

me.add(new ContextPathHandler());

}

在_layout.html 的 head标记中添加 base 标记,代码如下

<base href="${CONTEXT_PATH}/" />

修改页面中的链接标签 a ,将最前面的 "/" 去掉,以下是要改的地方,可能有遗漏

比如:<link rel="stylesheet" type="text/css" href="static/framework/bootstrap/css/bootstrap.css" />

本质上来说context_path的问题仅与view有关,以上是JFinal提供的简单处理方案 :)

参考资料:http://www.oschina.net/question/260040_45773

3.如果更改JFinal的web.xml 拦截后缀名。

<filter-mapping>

<filter-name>jfinal</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

“/*”不能正确出力“.html”这种后缀的动态请求。

参考资料:

新增一个HtmSkipHandler文件

public class HtmSkipHandler extends Handler {

public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) {

int index = target.lastIndexOf(".htm");

if (index != -1)

target = target.substring(0, index);

nextHandler.handle(target, request, response, isHandled);

}

}

再在JfinalConfig文件增加

/**

* 配置处理器

*/

public void configHandler(Handlers me) {

me.add(new HtmSkipHandler());

}

4. URL中的参数,没有在上下文中。

访问1个url,http://localhost/news/list.html?categoryId=2

Freemarker页面${categoryId}竟然报错。

必须在Controller的方法中,手动设置才行:

setAttr("categoryId",categoryId);

5.JFinal中restful拦截器如何实现。

jfinal中有restful拦截器,直接添加就是了。

/**

* 配置全局拦截器

*/

public void configInterceptor(Interceptors me) {

me.add(new Restful());

}

URL:http://localhost/news/2

获得参数:Integer id = getParaToInt(0);

但是,JFinal自带的Restful拦截器是写死的,比如"http://localhost/news/2"这个url只能这么写,

响应方法只能是show,而在SpringMVC中,可以很灵活,比如“/detail/{newsId}”,方法名随便取。

6.JFinal设置404和500等页面。

public void configConstant(Constants me) {

me.setError404View(TEMPLATE_PATH+"/error/404.html");

me.setError500View(TEMPLATE_PATH+"/error/500.html");

}

7.JFinal统一异常处理。

public class ExceptionInterceptor implements Interceptor

public void intercept(ActionInvocation ai) {

Controller controller = ai.getController();

HttpServletRequest request = controller.getRequest();

try {

ai.invoke();

} catch (Exception e) {

}

}

/**

* 配置全局拦截器

*/

public void configInterceptor(Interceptors me) {

me.add(new GlobalInterceptor());

me.add(new Restful());

me.add(new ExceptionInterceptor());

}

8.JFinal中配置Log4j。

源代码src目录下放置log4j.properties或log4j.xml,都行,xml格式也不需要额外配置listener之类的。

小雷FansUnion
2015年2月8日
湖北-武汉-循礼门

时间: 2024-08-07 02:03:10

JFinal开发8个常见问题的相关文章

iOS开发百度地图常见问题及解决办法

1.64bit模拟器不能正常工作 解决:请将Xcode5 的 Project -> Edit Active Target -> Build Settings -> Linking -> Other Linker Flags 中的"-ObjC"修改为"-all_load" 2.程序死在 _mapView = [[BMKMapView alloc] init]; 解决:很可能是由于没有在appDelegate里面初始化_mapManager 3.

Jfinal开发微信公众平台

http://blog.csdn.net/lyq8479/article/details/8937622 方法就是柳峰老师发的教程,jfinal的区别就是核心servlet的处理可以用拦截器结合controller实现. 1.定义一个验证请求的拦截器 public class CoreFilterInterceptor implements Interceptor { // 验证请求来源拦截器 public void intercept(ActionInvocation ai) { Contro

Android开发环境搭建常见问题(不定时更新)

1.关于 Parsing Data for android-L failed Unsupported major.minor version 51.0 错误 错误解决方案: 升级Android L,要求编译环境为jdk1.7,所以环境是jdk1.6的IDE会报 "Parsing Data for android-L failed Unsupported major.minor version 51.0" 错误,需要升级JDK了. Android开发环境搭建常见问题(不定时更新)

JFinal开发web项目出现问题小记

导读 作为中国优秀的开源项目之一JFinal有着极速开发的好处,是中小型应用开发的首选.在导师的建议下,我使用了JFinal来开发一个Java服务端应用,官方教程非常简单,就几十页(当然是中文的),学起来很快.然而在开发过程中肯定会遇到这样那样"无厘头"的问题,如何使用JFinal开发参考官方文档或网上某些人的教程即可,我再重写一遍也无多大意义,我这篇文章仅记录自己在使用JFinal开发过程中遇到的问题及注意事项,这样更有参考价值,也希望大家在遇到类似的问题后能及时找到解决方案,提高开

新手入门-如何使用JFinal开发javaweb(1)

博主本人是菜鸟.写这篇博客的原因是为了让和我一样的入门级菜鸟少走弯,还有就是加深我的理解. JFinal框架是国产的很轻量级的开发框架.能让程序员写的代码精简很多,开发效率从而更快. 我是写了一个JFinal版的数据库验证+跳转的Demo. 介绍开始: 编辑器:MyEclipse; 数据库:MySQL; 服务器:tomcat; 1 首先新建web项目 要强调的是Target runtime必须选择为None.然后点击两次Next,选中创建web.xml.finish~~~ 2 导入支撑项目的ja

Jfinal开发代码碎片_导出报表_配置druid数据源_使用guava

1.使用jfinal扩展包jfinal-ext-3.1.2.jar导出Excel报表,他需要依赖poi-3.12.jar jai包下载地址:http://files.cnblogs.com/files/zhougaojun/jfinal-ext_poi.zip 导出Excel方法: //导出Excel public void excel()throws Exception{ List<Record> list = Db.find("select * from activeaction

iOS日常开发总结-cell常见问题

1,cell上button,点击响应的是cell的点击事件 在日常开发中,cell上的button,点击不走点击事件,而是cell的点击事件.菜菜的我觉得可能是手势冲突了吧,毕竟cell有tap手势,button也有,而且button还是cell的子控件.幸运的得到大神的指示,他说,其实button的点击也存在只是在cell的之后,所以走的是cell的方法而不是button.以下是解决方案: 2, cell默认选中的时候会有一个选中状态,我就遇到过选中状态不消失的情况,以下是解决方案: 3,刷新

Maven开发Android的常见问题

序 在高效建立健壮的Android应用-Maven Android 开发文中提到,Maven in Android 听起来很牛逼,你是不是很想马上弄个HelloWorld,但是你可能要懊恼了,因为你马上回碰到Project build error: Unknown packaging: apk的错误,然后就停在这里了,我之前也是因为碰到这个问题就停了,然后就想骂人,特别是那个引诱你尝试的那个人(比如我),好了.这就是本文的来源.本文也会对不断碰到的问题进行总结,你有特别的问题也可用提出来,我到时

开发ffmpeg/live555常见问题错误及解决方法

#include <iostream>using namespace std;extern "C" {#include <libavcodec/avcodec.h> // required headers#include <libavformat/avformat.h>}int main(int argc, char**argv) { av_register_all(); // offending library call return 0;} ff