2018-05-18 15:49

在浏览器里面打开 http://jfinal.com/a/b/c/d 这个链接,就会看到 jfinal 的 404,而你的 404 出现了 powered by jetty , 必然是根本没启动成功

2018-05-18 15:49

只要是 404 页面出来了 Powered by jetty , 就必然是 jfinal 没有启动成功,例如启动参数错误,假定你的项目 webapp 是 "src/main/webapp" , 那么应该启动为:
JFinal.start("src/main/webapp", 80, "/", 5);

而你如果启动为下面的参数,就必定出 404 错误:
JFinal.start("webapp", 80, "/", 5);

如果你的项目真的启动成功,jfinal 自带的 404 页面应该是下面这样的:
http://jfinal.com/a/b/c/d

2018-05-18 12:19

http://www.jfinal.com/feedback/2429

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:59

Device 中没有主键值,调用 update() 的时候,没有办法确定是对数据库表中的哪条记录进行更新

因此,异常已经非常明确告知过:
You can't update mode without Primary Key, id can not be null

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 不正确

归根结底说就一句话,配置错误

2018-05-17 18:05

@有鱼名为咸 自己稍微看下文档,自己搭一个是分分钟的事情,一定要使用官方建议的路由方式,好处多多

2018-05-17 17:22

@阳光沙滩 写个工具类,然后里头将异步操作放在 new Thread() 之中,不需要的时候就使用常规的方法来访问数据库即可

2018-05-17 17:13

@阳光沙滩 在新创建的线程中来操作数据库就可以实现了

2018-05-17 17:12

@有鱼名为咸 建议使用 jfinal 原生的路由配置方式,不要用注解和扫描来配置路由

jfinal 之所以一直不提供注解与扫描自然是有很充分的原因的

2018-05-17 16:54

404 是最好处理的,如果是路由配置错了,根据 jfinal 文档配置一下

如果是 url 输入错了,改掉 URL

2018-05-17 16:53

什么是异步更新数据?