2017-04-03 21:51

@heijie730 开发模式可以向控制台输出交互信息,开发者看着交互方便开发

2017-04-03 21:50

@heijie730 子类覆盖掉父类中的 getInMsgXml() 即可,将其中的获取 xml 的代码照搬过来,然后去掉下面这一行:
ApiConfigKit.getApiConfig().isEncryptMessage();

2017-04-03 18:18

jfinal template engine 做设计成可以独立于 java web 运行,所以 template engine 自身的接口不会与 Session 耦合,如果需要在自定义指令定使用,建议两个办法:
1:添加拦截器 me.add(new SessionInViewInterceptor()),然后在自定义指令中通过 scope.get("session") 拿到它
2:通过定义一个 Handler,使用一个 ThreadLocal 对每次请求进行 set ,然后在自定义指令中通过 threadLocal.get() 来拿到它

建议采用第一种方式

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,很正常