2018-11-09 15:31

你碰到的这个问题,本质是关键字分隔符的问题,例如你在写 java 代码时:
if (...) ... else2
这个 else 与 2 连在一起了,java 编译器只能将你的 else2 当成变量名,而不是关键字 else

2018-11-09 15:29

@macaque 不会多出空格来,jfinal enjoy 处理过的,紧跟在 #else 后面的一个空格或者换行都会被处理掉,不会成为空格或换行

enjoy 处理过远超常人想象的细节

2018-11-09 09:49

@JM-java JDK 就配置了一下环境变量:JAVA_HOME

tomcat 配置在这里:
https://my.oschina.net/jfinal/blog/353062

druid 输出的东西要注意看是 INFO、DEBUG 还是 ERROR, 前两个不算错误输出

2018-11-08 19:05

@Yank 单步调试一下 TemplateRender.java,规则前面讲过了

2018-11-08 19:03

注意 #else 后面加个 空格

2018-11-08 18:58

@flash866 用 @NotAction 解决一下

2018-11-08 13:57

规则:finalView = baseViewPath + viewPath + view;

上面的三项:
1:baseViewPath 为 "/WEB-INF/html"

2:viewPath 为 "/user",这个值是在 add("/user", UserController.class) 时第三个参数指定的,而你第三个参数省略了,默认与第一个参数相同,即为 "/user"

3:view 为 "/registerbbbbbbbbb/registeraaaa.html" 来自于这行代码:render("/registerbbbbbbbbb/registeraaaa.html")

finalView 为 "/WEB-INF/html/user/registerbbbbbbbbb/registeraaaa.html"

但是,注意这里看但是,你的 render 方法中的 view 是以 "/" 打头的,所以 baseViewPath、viewPath 不起作用,所以你的 finalView 实际上为:
"/registerbbbbbbbbb/registeraaaa.html"

根据上面规则找到原因解决一下即可。

简单一句话:
finalView = baseViewPath + viewPath + view, 当 view 以 "/" 打头时前两项当成不存在

2018-11-08 13:41

@shenyao jfinal 俱乐部已经内测好几天了,你也先试试,本周还有点小功能要补充进去:
https://gitee.com/jfinal/jfinal-undertow

2018-11-08 09:23

@7479chen 在这个贴子上改一下就好,进入个人空间可以修改主这个贴子:
http://www.jfinal.com/my/share

此外,继承 CaptchaCache 而不是实现 ICaptchaCache,我想起来一个好处,因为 CaptchaCache 有个定时器,可以定时清掉过期的验证码,可以利用一下

2018-11-07 18:25

代码十分简洁,功能很实用,感谢分享

此外,建议几个改进:
1: 去掉所有 super 调用,例如: super.put(captcha); super.remove(key), 因为 super 的实在这种情况下应该完全抛弃

2:可以将继承 CaptchaCache 改成实现 ICaptchaCache 接口,这样也就没有 super 可以调用了

3: record.set("[Key]",...) 中的参数建议改成 "Key" , 不要加中括号

4:数据库字段名建议用符合 java 变量名规范的驼峰式

2018-11-07 18:19

如果版本号没有问题, 应该是你的参数不对, 第一个参数必须是数值类型,例如 int long float double BigDecimal 等等类型

2018-11-07 18:18

#number 指令是 jfinal 3.3 版本才有的功能,检查一下 jfinal 版本号是不是太低了

2018-11-07 14:16

单步调试一下, action 注入部分可以自己扩展的

2018-11-07 13:15

just do it

2018-11-07 13:15

自建一个类,继承一下 com.jfinal.plugin.activerecord.DbPro.java,覆盖其中的出问题的方法,改造正确

最后配置一下自己的实现:
arp.setDbProFactory(new MyDbProFactor());

注意,要先有一个:
public class MyDbPro extends DbPro {
...
}

再有一个 :
public class MyDbProFactory extends DbProFactory {
public DbPro getDbPro() {
return new MyDbPro();
}
}

然后才可以 arp.setDbProFactory(new MyDbProFactor());