JFinal开发8个常见问题

摘要:
2014年的时候,学过一段时间的JFinal,当时主要是了解这个框架,研究了下源码,看懂了部分。今天,2015年2月7日,弄了一下午的JFinal,把未来要上线的一个官网项目,迁移到了JFinal。下面是8个最常见的问题总结,相关原始资料都给出了链接。必须在Controller的方法中,手动设置才行:setAttr;5.JFinal中restful拦截器如何实现。jfinal中有restful拦截器,直接添加就是了。publicvoidconfigConstant{me.setError404View;me.setError500View;}7.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。
参考资料:http://www.oschina.net/question/53137_124287

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

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

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

public void configHandler(Handlers me) {
me.add(new ContextPathHandler());
}
在_layout.html 的 head标记中添加 base 标记,代码如下
<base href="http://t.zoukankan.com/${CONTEXT_PATH}/" />
修改页面中的链接标签 a ,将最前面的 "/" 去掉,以下是要改的地方,可能有遗漏
比如:<link rel="stylesheet" type="text/css" href="http://t.zoukankan.com/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 classHtmSkipHandlerextends 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日
湖北-武汉-循礼门

免责声明:文章转载自《JFinal开发8个常见问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[GSEAPY] 在Python里进行基因集富集分析Flutter form 的表单 input下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java 面向切面编程(Aspect Oriented Programming,AOP)

本文内容 实例 引入 原始方法 装饰者模式 JDK 动态代理和 cglib 代理 直接使用 AOP 框架——AspectWerkz 最近跳槽了,新公司使用了 AOP 相关的技术,于是查点资料,复习一下。之前,多少知道点,但没怎么在实际项目中使用过~ 下载 demo 实例 引入 package com.cap.aop;   publi...

iOS开发日记16-通知栏扩展 (App Extension)

今天博主有一个App Extension的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 总览 扩展 (Extension) 是 iOS 8 和 OSX 10.10 加入的一个非常大的功能点,开发者可以通过系统提供给我们的扩展接入点 (Extension point) 来为系统特定的服务提供某些附加的功能。对于 iOS 来说,可以使用的扩展接入...

mybatis源码分析(5)-----拦截器的实现原理(动态代理+责任链)

写在前面   MyBatsi 的拦截器模式是基于代理的代理模式。并且myBatis 的插件开发也是以拦截器的形式集成到myBatis 当中。   MyBatis 的拦截器已经插件是在org.apache.ibatis.plugin包下面。   MyBatis拦截器可以拦截的类,Executor(执行器),ParameterHandler(参数处理器),R...

Python 批量插入ES

  使用Python批量插入数据到ES中,如果是一条条插入,会发现效率很低,这时需要使用ES的批量插入bulk的功能。   以下示例代码,是将masscan输出的结果文件,抽取ip,port,和时间戳,插入到es中的。 #!/usr/bin/python # coding=utf-8 import json import time from elasti...

Android签名总结

http://www.cnblogs.com/wanqieddy/p/3556060.html signapk.jar与eclipse export插件默认赋予程序一个DEBUG权限的签名 signapk.jar包含有系统权限(system api, permission),而eclipse export插件默认赋予程序一个DEBUG权限的签名。 D:...

(转)利用openfiler实现iSCSI

转自:http://czmmiao.iteye.com/blog/1735417 openfiler openfiler是一个基于浏览器的网络存储管理工具。来自于Linux系统。openfiler在一个网络架构里面里面支持文件级的NAS和数据块级的SAN,支持CIFS,NFS,HTT/DAV,FTP 和iSCSI协议。openfiler是一个存储管理操作系...