JFinal获取多个model


个人博客 地址:http://www.wenhaofan.com/article/20180930112646

由于jfinal框架自身没有实现获取多个同一类型的Model的方法,导致获取ModelList的方式很不方便,解决方法很简单,新建BaseController 继承 Controller,在baseController中扩展一个获取ModelList的方法 ,在其他Controller中直接继承BaseController

代码如下

public <T> List<T> getModelList(Class<T> modelClass, String modelName,boolean skipConvertError) {
	Pattern p = Pattern.compile(modelName + "\[\d+\].[a-zA-z0-9]+");
	Map<String, String[]> parasMap = getRequest().getParameterMap();
	String paraKey=null;
	String modelName2 = null;
	List<T> resultList = new ArrayList<T>();
	for (Entry<String, String[]> e : parasMap.entrySet()) {
		paraKey = e.getKey();
		if (p.matcher(paraKey).find()) {
			modelName2 = paraKey.split("\.")[0];
			resultList.add(getModel(modelClass, modelName2, skipConvertError));
		}
	}
	return resultList;
}

接收参数格式为

modelName[0-n].attrName


例如

{

    tag[0].name:"tets",

    tag[0].sort:1,

    tag[1].name:"tets",

    tag[1].sort:1,

}

使用

List<Meta> tags=getModelList(Meta.class, "tag");

即可接收到长度为2的List


原文地址:https://www.cnblogs.com/fanwenhao/p/9728749.html