2017-04-04 10:14

如果只有支付宝,加入俱乐部也非常容易,建议采用如下办法:
1:让同事帮助用微信支付,然后再支付宝或现金给同事钱就好了,加入俱乐部支付时的二维码是与当前登录用户绑定的,所以谁来支付都可以

2:用支付宝在捐助区支付 199,然后我帮你设置添加到俱乐部即可

2017-04-04 10:11

简单回复一下这些问题:
1:action 参数自动注入的功能早在两年前就已经实现过,但在上线之前去掉了这个功能。主要是这个功能要么对用户有硬性要求,例如强制使用 JDK 8 并且还要在编译时打开保留参数名称,要么就必须引入类似于 @ParameterName 这样的注解。当然 jfinal 自己也有一个自创的方案,不过仍然觉得不满意,所以没有去实现

这个功能最核心要解决的问题是获取方法形参的参数名,spring 通过引入注解或者强制使用 JDK 8 并且设置编译参数保留住方法形参名称

此外,jfinal 是有 getModel、getBean 这类一次性注入大量属性的 API 的,或许你误以为只有 getPara

2:jfinal 目前已经有 @ActionKey 这个注解可以在 action 上指定访问路径,而且是系统启动时一次性生成映射。此外 jfinal 路由解析没有使用循环,更没有使用正则匹配,仅仅使用了一次从 map 中获取数据,以及一个 string 的 substring,所以 jfinal 的路由解析可能是所有 web 框架中最快的

3:jfinal 目前只做了最有需求的代码生成部分,而 service、controller 这部分的生成不同的开发者可能有不同代码组只习惯,jfinal 希望给开发者留下一个广泛的自由空间,况且 jfinal 是极简设计,代码量本身就少,手写点代码也不费事

此外,这里已经有了更强大的生成器:http://www.jfinal.com/project/4

4:自己实现也很简单:dao.find("select * from table"),jfinal 没去实现一来是因为太简单,二来是不提倡, select * 在阿里这样的公司是禁止的,况且 where 条件也没有,这种查询对于大部分的 table 来说是不需要的

5:日期型数据默认支持:yyyy-MM-dd 以及 yyyy-MM-dd HH:mm:ss,可以任选一种格式来组织数据,自定义日期的功能已经在备忘录中了,待添加

6:jfinal 默认不处理静态资源,而是将静态请求直接交由 tomcat、jetty 这类东东,当然你可以通过自定义 Handler 来处理静态资源

如果担心有人直接访问静态资源,在生产环境下通过有如下几种办法:
a:如果前端有 nginx,直接接管
b:如果不希望用户直接访问到静态 html,可以放在 WEB-INF 之下或者用 handler 进行拦截

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 是被编译后的字节码,通过记事本打开理应是看不到的字符,谈不上是乱码