由于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
本文由 范文皓 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: 2018-09-30 11:26:45.0
666