CRUD通用的Controller中的泛型调用问题

剑胆琴心 发布于 2013/06/23 10:07
阅读 1K+
收藏 2

@JFinal 你好,想跟你请教个问题:我想做一个CRUD的通用的Controller,给其他具体的Controller类进行继承。在这个通用的Controller中我设计了一个显示数据列表的list方法,如下

public void list(Class<? extends Model> modelClass, String listCols)
使用modelClass无法直接调用 paginate方法,我应该怎样去调用Page<T> page = T.dao.paginate这个方法?由于我对泛型的理解还很粗浅,目前被卡在这里了,谢谢!
加载中
0
剑胆琴心
剑胆琴心

已经解决了,编码如下:

@SuppressWarnings("rawtypes")
public <T extends Model> void list(T model, String listCols){
    ……
    @SuppressWarnings("unchecked")
    Page<T> page = model.paginate(……);
    ……
}
在继承类中调用父类中的list方法:
String listCols = "……";
public void list() {
    super.list(Blog.dao, listCols);
}

谢谢波总设计出如此优秀的框架,我已经在CSDN投票支持了。

JFinal
JFinal
感谢你的支持 :)
0
剑胆琴心
剑胆琴心

前面的实现比较笨拙,研究了泛型类的资料,改进如下:

@SuppressWarnings("rawtypes")
public abstract class CommonController<T extends Model> extends Controller {
	……
	protected T model;

	public void list() {
	……

		@SuppressWarnings("unchecked")
		Page<T> page = model.paginate(……);
	……
	}
}
继承类代码如下:

public class BlogController extends CommonController<Blog> {
	
	public BlogController() {
		this.model = Blog.dao;
		……
	}
}
在继承类的构造方法中传递Blog的实例。

0
JFinal
JFinal
你已经搞定了  
返回顶部
顶部