JFinal 拦截器无法获取表单post提交的数据
@JFinal 你好,想跟你请教个问题:JFinal 拦截器无法获取表单post提交的数据,而ajax提交的数据可以获取到,控制台能打印数据。
public class VisitLogInterceptor implements Interceptor {
public static final Logger LOG=Logger.getLogger(VisitLogInterceptor.class);
@Override
public void intercept(Invocation inv) {
try{
HttpSession session = inv.getController().getSession();
HttpServletRequest request=inv.getController().getRequest();
Map<String,String[]> paraMap=inv.getController().getParaMap();
String remoteIp=request.getRemoteAddr();
String controller=inv.getControllerKey();
String action=inv.getActionKey();
String username=(String) session.getAttribute(PermissionChecker.ADMIN_USERNAME);
Record record=new Record();
record.set("log_time", new Date());
record.set("action", action);
record.set("controller", controller);
record.set("username", username);
record.set("remote_ip", remoteIp);
record.set("filter",JsonKit.toJson(paraMap));
Db.use("jjb_log").save("jjb_visit_log",record);
}catch(Exception e){
LOG.error(e.getMessage(), e);
}finally{
inv.invoke();
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
终极方法:单步调试
引用来自“JFinal”的评论
不知道 paraName 的情况下,参考一下 jfinal Controller 的 keepPara 方法:
不知道 paraName 的情况下,参考一下 jfinal Controller 的 keepPara 方法:
我是想做通用的拦截,不到参数的具体名字,该怎么做
回复
getParaMap() 然后在 for 循环中迭代处理
两种最常见用法,选一种即可:
上面的方式是先从 inv 中获取 controller,剩下的代码与 action 中完全一样。
上面是先获取 HttpSerlvetRequest 对象,剩下的代码与常规 servlet 项目一样。