2018-08-10 17:18

@醉梦灬浮生 注意配置好 ehcache 的过期时间,不要永久存放验证码,参考 club 项目中的 ehcache.xml 中的某个过期时间配置

2018-08-10 16:30

@醉梦灬浮生 试试用 jfinal 中的 CacheKit.put(phone, ...) 去存,取的时候这样:
CacheKit.get(phone)

你的代码既然是跨域了,而 cookie 是与域名挂钩的,并且 session 依赖于 cookie 的实现,当你域名变了,那么 cookie 变了,session 中自然取不到值

2018-08-10 16:13

String phone 这个参数的值是什么? 单步调试一下

2018-08-10 16:11

路由问题一定要看文档,规则极其简单,已经没有可以回答的空间了:
http://www.jfinal.com/doc/2-3

从上面的文档中可以看到,表格中只有四种路由,不能再简单了

2018-08-10 15:53

init 方法中好像少了一个 arp.start(),所以你的 Db.update(sql) 这行代码执行应该有异常。 感谢分享

2018-08-10 15:48

@Krsguan jfinal 不支持这种路由,添加一个自定义的 Handler 将这个路由转换一下就可以了,参考 jfinal 的 com.jfinal.ext.handler 下面的一些实现类

2018-08-09 23:29

@受伤的蚂蚁 还有一个简单的办法,如果 data 是 map 类型的,可以用一下下面的表达式:
#(data[name]))

上面的用法,其中的 name 可以是动态的变量,但 data 这个是固定的一个变量名

2018-08-09 23:28

@受伤的蚂蚁 也就是将拼接后的 String 当成表达式再次求值,这个需要你做下指令扩展,例如扩展个 #eval 指令出来,或者试着做一个 shared method 扩展

#eval 指令比较好做,将里头的参数再次当成表达式求值即可

shared method 扩展需要获取到 Scope 对象中的值,需要使用一个 ThreadLocal 传递 Scope 过去,这个比较麻烦

2018-08-09 22:20

@ganglianhuo 使用 enjoy 时,有没有一种特别自由、熟悉的感觉? 表达式都是 Java 的用法

2018-08-09 22:18

建议 TemplateUtil 中再添加个 initEngine 方法,将 engine.setDevMode(...) 以及 engine.setBaseTemplatePath(...) 代码挪到 initEngine 方法中去,配置性的代码只需要调用一次就好

2018-08-09 22:16

Demo1 中的 Map、HashMap 建议使用 Kv 这个工具类,这个类继承自 HashMap,可以免去范型,避免代码中出现很多黄色波浪线

感谢分享

2018-08-09 21:22

在 MainConfig 中声明一个变量:
public static baseUploadPath;

然后:
me.setBaseUploadPath("case");
baseUploadPath = me.getBaseUploadPath();

最后,在任意地方都可以 MainConfig.baseUploadPath 来访问了

如果你希望得到的是一个全路径的 baseUploadPath,在以上代码的项目上参考一下 upload 模块中的那段处理该变量的方法即可

2018-08-09 21:01

@Snake8859 可以拼接,例如:
#("abc" + "def" + 123)

2018-08-09 20:42

#(j?j."+data[i].fieldName+":'') 改成:
#(j ? j.data[i].fieldName : "")

总之,指令括号中的一切都是表达式,要按表达式的写法去走