之前使用的都是jfianl_weixin_1.1版本,在本地调试的时候只需要注释掉@Before(WeixinInterceptor.class)拦截器就可以了。ps:(该方法一开始是看@天蓬小猪 的微博http://my.oschina.net/u/257950/blog/347392) 。今天需要开发新的微信项目,发现sdk已经更新到1.2版本了,于是熟练的注释掉了@Before(MsgInterceptor.class)这一行,然后运行微信开发调试小工具后就报了一个错误
java.lang.IllegalStateException: 需要事先使用 ApiConfigKit.setThreadLocalApiConfig(apiConfig) 将 ApiConfig对象存入,才可以调用 ApiConfigKit.getApiConfig() 方法
查看了一下changelog发现jfinal_weixin_1.2的一些小改动——支持多公众号。所以需要动态的配置ApiConfig,查看MsgInterceptor.class的源码发现了这样一句代码
// 将 ApiConfig 对象与当前线程绑定,以便在后续操作中方便获取该对象: ApiConfigKit.getApiConfig(); ApiConfigKit.setThreadLocalApiConfig(((MsgController)controller).getApiConfig());
于是明白了问题所在:只需要在MsgController.java的index()方法中加上
ApiConfigKit.setThreadLocalApiConfig(getApiConfig());//nie:本地测试调试加上的,需要删除
其他代码同理。
这些改动仅仅是用于本地测试使用,不建议真正修改官方源码,建议在在线调试时直接用官方提供了jar包覆盖本地的jar包即可。
时间: 2024-10-06 06:33:51