2018-05-18 19:43
碰到这种情况直接调用方法就好:
obj.geteBook()
obj.isXxx()
enjoy 这样设计的原因是为了提升性能,如果设计成支持 isXxx() 方法的 obj.xxx 形式取值,那么就要在 getXxx() 方法找不到时再找一次 isXxx() 方法,这个会显著拉低性能
但凡是考虑性能的框架都会考虑这里,例如 fastjson 就不支持 isXxx() 来生成 json
此外, eclipse 生成器会为 eBook 属性生成 geteBook() 方法,这个是 bug,需要你手动改掉,如果不改的话,可以在 enjoy 直接调用这个方法: obj.geteBook()
obj.isXxx 以及 geteBook 这类情况是很少发生的,为照顾少数场景而拉低整体性能是不值得的。让这类场景去使用 obj.isXxx()、obj.geteBook() 来实现功能是权衡后的结果
fastjson 甚至阿里巴巴的 Java 规范手册上压根就直接规定 boolean 属性的 getter 方法不能是 isXxx(), 必须是 getXxx()
这是一个好问题,点赞
2018-05-18 17:36
加个 SessionIdHandler:
public class SessionIdHandler extends Handler {
@Override
public void handle(String target, HttpServletRequest request,
HttpServletResponse response, boolean[] isHandled) {
// L.cm update by 2014-08-06 更精准的判断
boolean isFromURL = request.isRequestedSessionIdFromURL();
if (isFromURL) {
target = target.substring(0, target.indexOf(';'));
}
next.handle(target, request, response, isHandled);
}
}
具体代码在这里:
https://gitee.com/596392912/JFinal-commons/blob/master/src/main/java/com/siweifu/ext/handler/SessionIdHandler.java
最后配置一下:
me.add(new SessionIdHandler());
这个问题本质上与 jfinal 无关
2018-05-18 12:03
button 标签中的 name="#(device.id??)" 以及 form 标签中的 updateDevice?#(device.id??) ,根本起不到传递 device.id 值的作用
要传递 id 值得用 input 标签 type="hidden" name="device.id" value="#(device.id??)"
你的 form 表单根本看不到一处 value="#(device.id??)"
你的 form 表单的 action 属性的问号挂参也不正确,要改成:
updateDevice?device.id=#(device.id??) 这种 key= value 的形式
总之,随处都是问题,根本没用对
2018-05-18 11:10
使用 getParaValues() 来接收到数组,然后 for 循环转换一下
有几个小伙伴自己在 BaseController 中扩展过 getModels(...) 方法,可以获取到 List 的 model
大致的写法是:
for ( i = 0; i < size; i++) {
Info m = getModel(Info.class, "info[" + i + "]");
}
当然,使用上面的写法,在前端 input 域的 name 要做相应改变,例如:
name="info[0].title"
name="info[1].title"
name="info[2].title"
2018-05-17 22:13
参考 com.jfinal.render.TemplateRender 写一个 ThymeleafRender 出来:
public class Thymeleaf extends Render {
...
}
然后创建一个 MyRenderFactory:
public class MyRenderFactory extends RenderFactory {
public Render getRender(String view) {
return new ThymeleafRender(view);
}
}
最后再 configConstant(Constants me) 中配置一下即可:
me.setRenderFactory(new MyRenderFactory());
用的时候这样:
render(view);
除了前面讲的可以参考 TemplateRender 以外,还可以参考 com.jfinal.render 包下面的很多其它 Render,例如 FreemarkerRender ,都很简单,三四十行代码的事
最后,强列建议直接使用 jfinal 默认的模板引擎,无论是易用性、学习成本还是性能,甩 Thymeleaf 五十条街很轻松
在这里有文档,10 分钟掌握 90% 的用法:
http://www.jfinal.com/doc/2-1
2018-05-17 22:08
@fxxixi 使用如下几个解决方向:
1:配置错误,例如用户名或密码错误,通过使用 navicat 或 mysql 控制台登录可以测试出来
2:第一条中的测试方法要注意,使用的 navicat 与 mysql 控制台与你的项目运行要在同一台机器。因为 mysql 连接是分机器的,mysql 服务端与客户端是否在同一台机器上,这个极其关键
3:如果你拿 windows 记事本编辑过这个配置文件,那么在 jdbcUrl 这个配置前方加一行注释,例如加下面一行:
# jdbcUrl 配置
加这个的原因是 windows 记事本会丢失 utf-8 文件的最前方一个字符,造成 jdbcUrl 不正确
归根结底说就一句话,配置错误