MsgController 中代码的疑问

@Before(NotAction.class)
	public String getInMsgXml() {
		if (inMsgXml == null) {
			inMsgXml = HttpKit.readData(getRequest());
			
			// 是否需要解密消息
			if (ApiConfigKit.getApiConfig().isEncryptMessage()) {
				inMsgXml = MsgEncryptKit.decrypt(inMsgXml, getPara("timestamp"), getPara("nonce"), getPara("msg_signature"));
			}
		}
		if (StrKit.isBlank(inMsgXml)) {
			throw new RuntimeException("请不要在浏览器中请求该连接,调试请查看WIKI:http://git.oschina.net/jfinal/jfinal-weixin/wikis/JFinal-weixin-demo%E5%92%8C%E8%B0%83%E8%AF%95");
		}
		return inMsgXml;
}


  1. 为什么我在HttpKit中找不到readData()方法?是我jar包的导入方式不对吗?

  2. 不明白为什么要添加NotAction.class这个拦截器,是起什么作用的?


评论区

JFinal

2016-08-11 11:04

1:HttpKit.readData() 方法在 jfinal 2.2 的 jar 包中
2:Controller 中的 public 无参方法会成为一个 action,外界可以通过 url 调用到,使用 NotAction 是为了让这类方法调用不到。 之所以要让 controller 中的 方法成为 public 的,是为了让 Interceptor 中可以调用到,例如这个 getInMsgXml() 方法,开发者可能要在拦截器中调用它做些更强大的扩展

nbjgl

2016-08-11 12:02

@JFinal 非常感谢解答,get it~

热门反馈

扫码入社