2017-10-25 18:02

ContextPathHandler 中的操作与 setAttr 没有本质区别,都是调用 request.setAttrubite(...) 而已

再用一个更好的解决方案:
public void configEngine(Engine me) {
me.addSharedObject("path", JFinal.me().getContextPath());
}

2017-10-25 17:58

@jsm 试一下在controller 中用一下 setAttr("myPath", "abc"),然后页面用 #(myPath),看有没有显示出来

2017-10-25 17:26

得先确定 view type 是不是 jfinal 的:
me.setViewType(ViewType.JFINAL_TEMPLATE)

控制器中使用 render(String) 或者 renderTemplate(String) 这两个方法才可以

2017-10-25 16:40

@圣威 模板中的 #(...) #for #if 这些是指令或者表达式,只有在经手了 jfinal template engine 渲染后才会被动态替换成相应的值

建议仔细看下 jfinal 手册,都是基础

2017-10-25 16:38

执行:
List<Record> list = Db.find(sql, ...);

取出:
list.get(i).get("a");
list.get(i).get("b");

2017-10-25 16:37

@songhuaming2000 如果设置为 false,那么 engine 不会检查你的模板是否被改过了,这样做的好处是生产环境性能更好

2017-10-25 16:36

jfinal 专注于 MVC + ORM,并未提供服务治理的功能

服务治理是另一个领域的事情了

2017-10-25 12:26

@netwild jfinal 中的 IRenderFactory 接口具有非常明确的目的,就是为了实现 Render 实现类的接管,对 RenderFactory 进行抽象便可实现

2017-10-25 11:22

#(BASE_PATH) 是用的 jfinal template engine,确定一下配置:
me.setViewType(ViewType.JFINAL_TEMPLATE);

再确定控制器中用的是: render(String);

2017-10-25 11:20

中断的连接后期恢复,注意配置好 DruidPlugin 即可, druid 有自己的重连机制,尽可能不要自己处理

2017-10-25 11:20

参考 jfinal 手册第 5.13 章,用这种方式启动 ActiveRecordPlugin,而不要使用 me.add(arp) 的方式去启动

将 ActiveRecordPlugin 的启动放在独立的线程中,就不会影响 jfinal 启动主线程

2017-10-25 10:50

@小周子 jquery form 是极其好用的,它的最大的好处是你的 form 表单完全按常规方式去组织,心中没有 ajax 什么事情,而后用 jquery form 的一个 ajaxForm 方法来发起 ajax 请求

相当于将普通请求自动接管,并自动转换成 ajax 请求,非常省心,本站所有数据提交全用的这种方式

2017-10-25 10:45

@soc post 请求至少分为两种,key value 形式的 post 请求照样可以用 getPara 获取,典型的就是用 javascript 发送的 ajax post 请求,以及 form 表单提交时用 post 请求,后端都是 getPara(key)

2017-10-25 10:43

依存关系越多越复杂,系统就越不稳定,相反依存关系越少越简单,系统越稳固

上面这些 interface 没有实质意义,只会把事情搞得更复杂。接口主要是用来对事物、概念进行抽象,便于人类思维格律对其进行建模、理解、处理,当抽象无法达成这几个目标,就是制造麻烦