来源 http://www.codeweblog.com/jfinal%E6%8E%A5%E6%94%B6%E5%A4%9A%E4%B8%AAmodel/
Controller增加如下方法,刚开始看JFinal,挺好的东西,准备在下个项目用了
页面写法 user[0....n].[attr]
代码有点乱,没整理
public <T> List<T> getModelList(Class<T> modelClass,String modelName){
Pattern p = Pattern.compile(modelName + "\\[\\d\\].[a-zA-z0-9]+");
Map<String, String[]> parasMap = request.getParameterMap();
String paraKey;
Set<String> modelPrefix = new HashSet<String>();
for (Entry<String, String[]> e : parasMap.entrySet()) {
paraKey = e.getKey();
if(p.matcher(paraKey).find()){
modelPrefix.add(paraKey.split("\\.")[0]);
}
}
List<T> resultList = new ArrayList<T>();
for (String modelName2 : modelPrefix) {
resultList.add(getModel(modelClass,modelName2));
}
return resultList;
}
以上来自网上资料,本人在使用中发现一问题,当传入的 user[0....n].[attr] n>9时,数据就给丢了,
解决办法:
Pattern p = Pattern.compile(modelName + "\\[\\d\\].[a-zA-z0-9]+");
改成
Pattern p = Pattern.compile(modelName + "\\[\\d+\\].[a-zA-z0-9]+");
就可以了。