个人博客 地址: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