2020-05-08 10:53
jfinal 是标准的 java web 项目,所以,只需要在 web.xml 中添加 JFinalFilter 就可以将 jfinal 集成到原有的 java web 项目中去了
不想改成 maven,可以在首页右侧下载 jfinal-4.8-all.zip ,里头有相应的 jar 包可以放到项目中使用
通过在 web.xml 中引入 jfinal, 相当于你现有的项目与 jfinal 是共存的,新功能就可以直接做到 jfinal 中去了,两头互不干扰
有一个问题需要注意,web.xml 中配置的 JFinalFilter 与其它的 Filter 在调用时有先后次序,先配置的先调用
所以,如果配置在前面的 Filter 要注意将 "不该自己处理" 的请求 "放行", 否则后续的 Filter 收不到请求
2020-05-08 10:45
MetaBuilder 中留了两个扩展的地方,一个是 isSkipTable(String tableName) ,另一个是 filter(Predicate predicate)
其中前一个需要继承 MetaBuilder 来扩展,这个是在 JDK 8 之前给定的扩展方式
后来 jfinal 要求至少 JDK 8 以后,留了 filter 这第二个扩展,扩展方式在源码的注释里头有:
Generator gen = new Generator(...);
gen.setMetaBuilder(new MetaBuilder(dataSource).filter(
tableName -> {
return tableName.startsWith("SYS_");
})
);
gen.addExcludedTable("error_log"); // 注意这行代码要放在上面的之后调用
gen.generate();
上面的例子中,排除掉了以 "SYS_" 打头的 table,应该正好是你需要的使用方法
jfinal 其实处处可扩展,建议有时间的时候稍微浏览一下源代码,必然会轻松增加很多新技能
2020-05-05 15:32
@INFECTION_K 刚刚已经提交代码,了你看看是不是符合你的需求:
https://gitee.com/jfinal/jfinal/commit/63490d7099be1018b869f6b3060cbf7e4a939c6c
2020-05-05 11:40
jfinal 新版本添加的这个功能, 与你的实现思路基本一致:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/template/Engine.java
public Engine addEnum(Class enumClass) {
Mapmap = new HashMap();
Enum[] es = enumClass.getEnumConstants();
for (Enum e : es) {
map.put(e.name(), e);
}
return addSharedObject(enumClass.getSimpleName(), map);
}
2020-05-05 09:57
@xiuj 打印参数参考这个:
https://jfinal.com/share/1909
https://jfinal.com/share/492
2020-05-05 09:53
用一下最新版本的 jfinal , 以前其中的某一个版本注掉了一段代码:
https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/render/RedirectRender.java
注意上面的代码第 77 行
新版本使用方法如下:
https://jfinal.com/share/2093
如果不想使用线上的新版本,也可以通过继承 RenderFactory 来实现:
public void MyRedirectRender extends Render {
....
这里的代码照抄最新版本的 RedirectiRender.java
}
public class MyRenderFactory extends RenderFactory {
public Render getRedirectRender(String url) {
return new MyRedirectRender(url);
}
}
}
最后配置一下就可以了:
me.setRenderFactory(new MyRenderFactory());