2017-04-13 11:21
办法有很多,这里只说三种:
1:创建该拦截器的一个继承类,在构造方法中直接 new UserService() 给它用
2:自定义一个注解,让这个注解可以接收一个 class 形参数,例如创建一个名为ConfigService的注解:
@ConfigService(UserService.class)
然后在你的那个 TestInterceptor 中通过下面的方法创建:
Class serviceClass = inv.getMethod.getAnnotation(ConfigService.class).value();
然后再创建这个业务类对象:
serviceClass.newInstance();
打完收枪
3:还可通过 url 或者 setAttr 或者 threadlocal 来传个参到拦截器,拦截器再做出判断
2017-04-12 21:14
@程序猴 后端直接: getModel(....).update() 就可以打完收枪了,不需要弄那么麻烦
前的 input 也有问题,modelName 前缀都没有,所以 getModel 完全无法工作,这些都是基本,为何不看看 jfinal 手册,里面 getModel 怎么用,表单中怎么写都有实例
首页的 jfinal demo,有一个 Blog 表单的增删改查,已经简单到了极致,为何不照着里面来写表单:
input name="blog.title"
input name="blog.content"
这些表单的 name 都没有,后端怎么工作?
2017-04-12 17:45
实现方式极其简单,假定你使用的是 jfinal template engine,通过如下几步:
1:创建自定义 MyRender
public class MyRender extends TemplateRender {
public void render() {
// 这里插入想要的代码
super.render();
// 这里插件想要的代码
}
}
2:创建 MyRenderFactory
public class MyRenderFactory extends RenderFactory {
public Render getRender(String view) {
return new MyRender(view);
}
}
3:切换为自己的
me.setRenderFactory(new MyRenderFactory())
你还可以在第二步中 try catch, 做些异常处理
2017-04-12 16:40
@l745230 确实有很多人碰到了这个问题,所以 jfinal demo 中的这个 provided 已被我改掉了