2017-04-03 18:11

jfinal demo 中有一些使用方法,例如 layout 与 define 的使用,addSharedFunction 的使用

jfinal 3.0 自带的扩展指令并不多,主要就是一个 #date 指令,用法很简单:
1:#date(value) 使用默认格式输出日期
2:#date(value, "yyyy-MM-dd HH") 使用指定的 pattern 输出日期

这里不得不做个广告,jfinal club 项目中确实有很全面的用法,建议加入俱乐部

2017-04-03 18:07

@heijie730 getApiConfig() 这个方法是让拦截器进行回调的,不要在这个方法中写过多的东西 getInMsgXml() 之所以会有异常,是因为这个 getApiConfig() 方法就是为了在 getInMsgXml() 之前进行准备工作的

让 getApiConfig() 保持干净,想办法在别的方法中调用 getInMsgXml()

2017-04-03 18:05

基本的代码在那篇贴子中已经给出了,自己尝试写一下

此外,建议用 jfinal 3.0 sql 管理功能去生成 sql,会更加省事

2017-04-03 10:08

使用 session 添加一个全局拦截器:
me.add(new SessionInViewInterceptor())
用的时候这样:
#i(session.user)

request 中的数据已经被自动注入进来了,可以直接使用,例如:
setAttr("key", 123);
用的时候这样:
#(key)

2017-04-02 11:01

@siyuan 专业的人干专业的事,所以防注入的事情还是交给 Druid 的 WallFilter 吧

2017-04-01 23:52

@siyuan 真实环境去测试一下,preparestatement 是可以防止 sql 注入的

2017-04-01 21:31

检查一下 Controller 是否继承了 MsgController,否则 getInMsgXml() 会报错

此外,如果不贴出异常来,无法回复你的问题

2017-04-01 21:30

用 jfinal template engine 提供的 #date 指令最方便,有两种用法:
1:#date(value) 使用默认格式输出,默认格式可以通过 engine.setDatePattern(...)配置
2:#date(value, "yyyy-MM-dd") 使用指定 patter 格式输出

将议将最常用的输出格式设置成默认的,少数特殊情况使用第二个参数临时指定输出格式

2017-04-01 21:28

@熊猫先生 直接用 jfinal template engine 会方便很多,jfinal 手册中有详细说明,10 分钟内即可上手使用

2017-04-01 21:27

.class 是被编译后的字节码,通过记事本打开理应是看不到的字符,谈不上是乱码

2017-04-01 21:26

特别注意,路由以及 baseViewPath、viewPath 的规则在 jfinal 手册中都有说明,建议仔细看一下手册

此外,即便是没有看手册,通过看异常,也能知道 jfinal 是在找哪个 jsp 文件,也能猜测出来是 jsp 路径问题

2017-04-01 21:25

注意 render(String view) 方法的具体用法:
1:当 view 以 "/" 打头时,从项目根下面去找视图文件
2:否则, finalView = baseViewPath + viewPath + view
其中 baseViewPath 默认为项目根,通常可以忽略不关注,但 viewPath 尤其要注意,该值是在映射路由时指定的,例如:
me.add("/user", UserController.class, "/path")
上面代码的第三个参数 "/path" 就是 viewPath 值,而你的项目之中映射路由时并没有指定第三个参数,这时第三个参数默认与第一个参数值相等,即为:"/user"

最后的结论是:render("register.js") 根本找不到相关的 jsp 文件,报 404,很正常

2017-04-01 21:19

历史上出现这种情况的有两种原因:
1:页面中有某个资源的 src 值为空串,例如 src=""
2:只出现过一次,具体原因忘记了

其中第一个是出现最多次的,要格外关注。可以肯定的是:这种情况与 jfinal 自身毫无关系,细心地对程序多调试几次就能解决

2017-04-01 17:38

jfinal 3.1 会支持动态 include ,目前先用一下 if 判断顶一下:
#if (...)
#include("front/public/head.html")
#else
#include("admin/public/head.html")
#end

如果这种判断比较多的话,用一下 elseif 多分支

2017-04-01 10:43

@siyuan jfinal 数据库操作全部使用 PreparedStatement,无法被 SQL 注入,如果还是不放心,在 DruidPlugin 中配置一个 WallFilter