2017-02-21 18:01

通过创建一个public class MyMetaBuilder extends MetaBuilder 并覆盖掉其中的 boolean isSkipTable(String tableName) 在其中自由决定哪些是需要处理的表

只需要针对 tableName 这个参数,决定返回 true 还是 false 就可以控制转换哪些表,例如,使用正则表达式或者外部配置文件等方式

2017-02-21 15:48

为啥不直接删目录? 可以不使用递归删

2017-02-21 11:35

update() 这行代码执行时会生成一条 sql,看下这条 sql 有啥不对的就好,输出 sql 的方法,配置一下: arp.setShowSql(true);

2017-02-21 11:29

使用 baseUploadPath 的好处是,可以很方便地转移整个上传目录到其它的某个目录,例如原先是在 C:/files 目录,发现 C 盘空间不够了,需要转移到 D:/new_path,则只需要改下 baseUploadPath

如果没有固定一个 baseUploadPath 值,要做以上的改变会非常麻烦,很可能需要改 java 代码

2017-02-21 11:27

jfinal 后期的版本,引入了一个叫 baseUploadPath 的概念,该变量值可以通过 me.setBaseUploadPath(...) 进行配置,然后所有上传文件都会以这个 baseUploadPath 为基础路径去存放,在 getFile("parm", "E:/resources/", 3*1024*1024); 中指定的 "e:/reources/" 只会当成为一个相对路径

具体到方案,可以通过 me.setBaseUploadPath("E:/resources/") 配置一下就好

如果你的项目有所谓的多个 baseUploadPath 存在,可以用一下 File 移动目录来实现

2017-02-21 11:23

除了 @Dreamlu 给出的帮助以外,还可以看一下 jfinal 手册中的有关 ActiveRecord 在非 web 环境下使用那一章节

2017-02-21 11:22

抱歉没有用过 Atlas,给不到多少具体的帮助。中间件一般在用的时候对上层是透明的,所以建议主要去学一下 Atlas 的配置细节

在 jfinal 这端,对于数据源的配置会在 DruidPlugin、C3p0Plugin 这两个类中的构造方法和 setter 方法中提供

2017-02-21 00:09

@筱-舞瞳 sql 语句错了,将完整的 sql 贴出来

2017-02-20 18:09

除了 iframe 以外,还有两个方案:
方案一:
1:右侧使用一个 div 作为内容显示区域的根
2:然后每次点击菜单发送 ajax 请求,特别注意,该请求返回来的数据为 html 片段,而不是 json 数据
3:html 片段返回以后,通过 jquery 将片段替换掉在第一步中使用 div 中已有内容

方案二:
1:通过常规页面跳转的方式来做
2:使用一个 js 在页面加载完成以后,控制一下菜单的显示状态,对于复杂的情况,例如操作多级菜单时,可能需要有变量作为辅助

用户可访问的网站前端采用方案二,后台管理采用方案一,建议加入俱乐部,里面有实际的代码可以参考

2017-02-20 17:56

@rapin 你自己也写了一个? 分享出来看看

2017-02-20 17:55

jfinal 的 json 实现是支持 null 值的,根据异常来看是由于调用 JSONArray 上的 getter 方法时出错,尝试用 jfinal 已有的工具代替 JSONArray,或者就直接使用 JSONArray 去做 json 转换得到 jsonString,然后这样用:
renderJson(jsonString)

2017-02-20 17:22

@hjhtchh 在 sql 中直接添加 order by age

2017-02-20 17:01

fastjson 已经集成在了 jfinal 之中,只需要引入相关的依赖即可,一般对于 fastjson 有两种用法:
1:me.setJsonFactory(new FastjsonFactory())
该用法是 json 串与 object 的转换都使用 fastjson,而 fastjson 对 Record 这种类型转换支持不太好

2:me.setJsonFactory(new MinxedJsonFactory())
该用法是转 json 串使用 jfinal 的实现,而转 object 使用 fastjson 的实现,建议使用这种方式

2017-02-20 16:00

使用一下 #date(...) 指令,有如下两种用法:
1:#date(xxx) 使用默认格式输出,这个默认格式可以通过 engine.setDatePattern(...)配置
2:#date(xxx, "yyyy-MM-dd HH:mm:ss") 使用指定的格式输出