开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3965|回复: 0
收起左侧

[图文教程] jfinal将页面提交数组对象转换成List<Model>

[复制链接]

结帖率:33% (1/3)
发表于 2013-2-25 15:41:32 | 显示全部楼层 |阅读模式   上海市上海市
JFinal是一个比较快速的JAVA WEB开发框架,一直在关注,最近用的比较多,项目中遇到页面提交一组MODEL数据提交的场景,但JFinal未尚未提供实现,因此临时写了一个,现在分享出来 ,给大家提供一个思路,代码仅供参考,如果不当之处请批评指正。

调用方法:
List<Const> beanList = ModelUtils.batchInjectModel(getRequest(),Const.class,"beans");
  1. package com.jfinal.core;

  2. import java.util.ArrayList;
  3. import java.util.Enumeration;
  4. import java.util.HashSet;
  5. import java.util.List;
  6. import java.util.Set;

  7. import javax.servlet.http.HttpServletRequest;

  8. import com.jfinal.plugin.activerecord.Model;

  9. /**
  10. * Model Tools
  11. *
  12. * @author wangkai
  13. * @date Feb 14, 2013 1:43:37 PM
  14. *
  15. */
  16. public class ModelUtils {

  17.     /**
  18.      * 将页面中的数组对象转换成List<Model>
  19.      *
  20.      * @param <T>
  21.      * @param request
  22.      * @param modelClass
  23.      * @param prefix
  24.      * @return
  25.      *
  26.      * @author wangkai
  27.      * @date Feb 14, 2013
  28.      *
  29.      */
  30.     @SuppressWarnings("unchecked")
  31.     public static <T> List<T> batchInjectModel(
  32.             final HttpServletRequest request,
  33.             Class<? extends Model> modelClass, String prefix) {
  34.         List<T> modelList = new ArrayList<T>();
  35.         int size = getArrayLength(request, prefix);
  36.         for (int i = 0; i < size; i++) {
  37.             modelList.add((T) ModelInjector.inject(modelClass, prefix + "[" + i
  38.                     + "]", request, false));
  39.         }
  40.         return modelList;
  41.     }

  42.     /**
  43.      * Get array key beans[0].ID -->beans[0] beans[1].ID -->beans[1]
  44.      *
  45.      * @param request
  46.      * @param prefix
  47.      * @return
  48.      *
  49.      * @author wangkai
  50.      * @date Feb 14, 2013
  51.      *
  52.      */
  53.     @SuppressWarnings("unchecked")
  54.     public static Set<String> getArrayKeys(final HttpServletRequest request,
  55.             String prefix) {
  56.         Set<String> keys = new HashSet<String>();
  57.         String arrayPrefix = prefix + "[";
  58.         String key = null;
  59.         Enumeration<String> names = request.getParameterNames();
  60.         while (names.hasMoreElements()) {
  61.             key = names.nextElement();
  62.             if (!key.startsWith(arrayPrefix)) {
  63.                 continue;
  64.             }
  65.             if (key.indexOf("]") == -1) {
  66.                 continue;
  67.             }
  68.             keys.add(key.substring(0, key.indexOf("]") + 1));// Get all bean[X]
  69.         }
  70.         return keys;
  71.     }

  72.     /**
  73.      * Get array length
  74.      *
  75.      * @param request
  76.      * @param prefix
  77.      * @return
  78.      *
  79.      * @author wangkai
  80.      * @date Feb 14, 2013
  81.      *
  82.      */
  83.     public static int getArrayLength(final HttpServletRequest request,
  84.             String prefix) {
  85.         return getArrayKeys(request, prefix).size();
  86.     }
  87. }
复制代码
  1. package com.jfinal.core;

  2. import java.util.ArrayList;
  3. import java.util.Enumeration;
  4. import java.util.HashSet;
  5. import java.util.List;
  6. import java.util.Set;

  7. import javax.servlet.http.HttpServletRequest;

  8. import com.jfinal.plugin.activerecord.Model;

  9. /**
  10. * Model Tools
  11. *
  12. * @author wangkai
  13. * @date Feb 14, 2013 1:43:37 PM
  14. *
  15. */
  16. public class ModelUtils {

  17.     /**
  18.      * 将页面中的数组对象转换成List<Model>
  19.      *
  20.      * @param <T>
  21.      * @param request
  22.      * @param modelClass
  23.      * @param prefix
  24.      * @return
  25.      *
  26.      * @author wangkai
  27.      * @date Feb 14, 2013
  28.      *
  29.      */
  30.     @SuppressWarnings("unchecked")
  31.     public static <T> List<T> batchInjectModel(
  32.             final HttpServletRequest request,
  33.             Class<? extends Model> modelClass, String prefix) {
  34.         List<T> modelList = new ArrayList<T>();
  35.         int size = getArrayLength(request, prefix);
  36.         for (int i = 0; i < size; i++) {
  37.             modelList.add((T) ModelInjector.inject(modelClass, prefix + "[" + i
  38.                     + "]", request, false));
  39.         }
  40.         return modelList;
  41.     }

  42.     /**
  43.      * Get array key beans[0].ID -->beans[0] beans[1].ID -->beans[1]
  44.      *
  45.      * @param request
  46.      * @param prefix
  47.      * @return
  48.      *
  49.      * @author wangkai
  50.      * @date Feb 14, 2013
  51.      *
  52.      */
  53.     @SuppressWarnings("unchecked")
  54.     public static Set<String> getArrayKeys(final HttpServletRequest request,
  55.             String prefix) {
  56.         Set<String> keys = new HashSet<String>();
  57.         String arrayPrefix = prefix + "[";
  58.         String key = null;
  59.         Enumeration<String> names = request.getParameterNames();
  60.         while (names.hasMoreElements()) {
  61.             key = names.nextElement();
  62.             if (!key.startsWith(arrayPrefix)) {
  63.                 continue;
  64.             }
  65.             if (key.indexOf("]") == -1) {
  66.                 continue;
  67.             }
  68.             keys.add(key.substring(0, key.indexOf("]") + 1));// Get all bean[X]
  69.         }
  70.         return keys;
  71.     }

  72.     /**
  73.      * Get array length
  74.      *
  75.      * @param request
  76.      * @param prefix
  77.      * @return
  78.      *
  79.      * @author wangkai
  80.      * @date Feb 14, 2013
  81.      *
  82.      */
  83.     public static int getArrayLength(final HttpServletRequest request,
  84.             String prefix) {
  85.         return getArrayKeys(request, prefix).size();
  86.     }
  87. }
复制代码
  1. <#list beans as x>
  2. <tr>
  3.         <td style="width:40px;text-align:center" nowrap>${x_index+1}</td>
  4.         <td style="width:120px" nowrap>
  5.                 <input type="hidden" name="beans[${x_index}].ID" value="${(x.ID)!}"/>
  6.                 <input type="text" name="beans[${x_index}].NAME" value="${(x.NAME)!}"/>
  7.         </td>
  8.         <td style="width:150px" nowrap>
  9.                 <input type="text" name="beans[${x_index}].CODE" value="${(x.CODE)!}"/>
  10.         </td>
  11.         <td style="width:120px" nowrap>
  12.                 <input type="text" name="beans[${x_index}].VALUE" value="${(x.VALUE)!}"/>
  13.         </td>
  14.         <td>
  15.                 <input type="text" name="beans[${x_index}].REMARK" value="${(x.REMARK)!}" style="width:99%;"/>
  16.         </td>
  17. </tr>
  18. </#list>
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表