JFinal

登录 注册

jfinal 批量数据保存,传入后台数组,后台是否有急速通用的参数接收方法?

例如:

JFinal action report -------- 2016-09-21 22:35:46 ------------------------------

Parameter   : InsertedRows[0][status]=P  InsertedRows[0][remarks]=新增数据  InsertedRows[0][link]=add  InsertedRows[0][iconCls]=fa-book  InsertedRows[0][name]=新增  

--------------------------------------------------------------------------------

后台如何方便将取值 映射到 Model中?

@JFinal

String[] array = getParaValues("key");

如果属性多,也不太方便。有没有简单的取值方法 把这个数组直接转成Model?

评论

  • 09-21 22:54
    @JFinal Controller接收数组参数时,转为List[Model]或List[Bean]
  • 09-21 23:00
    尽量使用 getModel 获取整个对象,如果要同时获取到 List 这样的数据,可以在 controller 中创建一个 getModels(...) 方法,大体思路如下:
    List ret = new ArrayList();
    for (int i=0; i < size; i++) {
    Xxx xxx = getModel(Xxx.class, "xxx[" + i + "]"); // 循环获取多个model对象
    ret.add(xxx);

    简单说就是通过 jfinal 已经提供的 getModel,进行循环,获取多个,页面生成的 name 需要精心设计一下,上例中的 "xxx[" + i "]" 是在指定 modelName 前缀,每次循环前缀不同即可,页面中 input 的 name是这样的形式:
    name="xxx[0]"
    name="xxx[1]"
    这样在后端的 for 循环中就可以动态拼接出前缀了,注意循环中的 size,可以是通过 getParaValues(...).lenght 得到,也可以在表单中单独用个变量传过来
  • 09-22 10:56
    @JFinal , 如果是这种形式InsertedRows[0][link]=add ,何解?
  • 09-22 10:58
    @小飞象 InsertedRows[0][link]=add 改成 InsertedRows[0].link=add 即可
  • 09-22 10:59
    InsertedRows[n] 这个相当于是 modelName,是在 getModel 或 getBean 时可以指定的一个前缀,这两个方法都支持传入第二个参数,如:getModel(Xxx.class, "yyy"),这里的第二个参数 yyy 就是在表单中的前缀 name="yyy.attName"
  • 09-22 11:08
    这种形式是前端框架决定的,@JFinal 能不能扩展下com.jfinal.core.Injector
    String modelNameAndDot = StrKit.notBlank(beanName) ? beanName + "." : null; modelNameAndDot 这个作为一个参数传入,这样使用会不会极速方便呢?
  • 09-22 11:09
    @小飞象 jfinal 2.3 考虑添加 getModels 以及 getBeans 支持一下
  • 09-22 11:11
    @JFinal 感谢波总!!!
  • 09-22 22:34
    @JFinal 超赞!^_^!!
  • 发送