jfinal常见问题

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。

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提供的简单处理方案 :)

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之类的。

时间: 2025-01-14 18:10:44

jfinal常见问题的相关文章

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, 把这

PHP常见问题及解答

当作PHP学习时,总是会在baidu上查很多的例如开发环境的选择呀,PHP好不好呀!或者是不是转学JAVA,或是.NET等: 首先本人是从2010年下半年开始报名学的PHP(IN Guangzhou),每周一天学了近6个月左右,从最基础的HTML,CSS,DIV,JAVASCRIPT,AJAX,PHP,然后学二次开发:闲暇之余还开通了一个个人blog( PHP wordpress); 由于个人工作原因,这几年放了一段时间未动PHP了,今年开始又自学了.NET; ---目的就想业余做一份兼职,锻炼

微信JS-SDK说明文档及常见问题处理

概述 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验. 此文档面向网页开发者介绍微信JS-SDK如何使用及相关注意事项. 使用说明 在使用微信JS-SDK对应的JS接口前,需确保公众号已获得使用对应JS接口的权限,可登录微信公众平台进入“开发者中心”查看对应的接口权限. 注意:

NHibernate常见问题及解决方法

NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end-of-text> (possibly an invalid or unmapped class name was used in the query)."错误查了好半天终于查到了.这篇文章是我转载的NHibernate的常见错误... hbm.xmlNHibernate文件中版本号可能引起的

NTB调试常见问题指南

作为实现不同PCI域乃至跨节点数据传输的重要器件,NTB在服务器和存储领域实现双控.内存互访等方面发挥着重要的作用.由于它本身既作为virtual port出现,又可以被互联的结点通过pci scan看到,作为一个link port出现,加之其上实现的地址转换和转发功能,在实际工程项目中,难免会碰到各种问题.本文结合笔者最近的工作,分享了NTB调试过程中常见的问题和解决思路和办法. 从问题的现象来看,具体常见问题包括: 找不到NTB设备: NTB mailbox无法传送数据: ReqID 无法探

实现了Zbus的JFinal插件,JFinal里用Zbus更方便了。

zbus https://git.oschina.net/rushmore/zbus 轻量级服务总线/消息队列 1)多种消息模式--支持生产者/消费者,发布订阅,RPC 2)丰富的API--C/C++/C#/JAVA/Python/Node.JS跨平台.多语言支持 3)开放协议标准--原生兼容HTTP协议(长连接),头部动态扩展 4)支持TrackServer与ZbusServer高可用横向动态扩容机制 jfinal https://git.oschina.net/jfinal/jfinal J

SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结

一 开发环境 1.动态web工程 2.部分依赖 java代码: hibernate-release-4.1.0.Final.zip hibernate-validator-4.2.0.Final.jar spring-framework-3.1.1.RELEASE-with-docs.zip proxool-0.9.1.jar log4j 1.2.16 slf4j -1.6.1 mysql-connector-java-5.1.10.jar hamcrest 1.3.0RC2 ehcache 2

转:Web页面通过URL地址传递参数常见问题及检测方法

Web页面即我们在浏览器中所看到的网页,在Web应用程序中,其页面往往需要进行动态切换和数据交互,页面间的数据常规传递方法有多种,本文主要介绍Web页面处理程序中常见的URL地址参数传递方法,包括概述其实现原理.特点和常见问题,最后介绍检测该方式常见应用问题的测试思路和方法. 1.web页面的概念 Web是internet上一个非常重要的资源信息网,产生于20世纪90年代初,它遵循超文本传输协议,以超文本或超媒介的形式传送各种各样的信息,为用户提供了一个具有友好的图形化界面--Web页面,以便用

JFinal里得到表结构的方法总结

JFinal里得到表结构的方法总结: 1.得到已经配置的Model类的表结构.(推荐用法).如下,定义一个User的Model类,这样就可以得到Model类的表结构了.具体实现不明白,请高手指导. public void tableMappingTest(){  Table table = TableMapping.me().getTable(User.me.getClass());    renderText(table.getColumnTypeMap().toString());   }