JFinal

登录 注册
JFinal 已连续多年蝉联最受欢迎中国开源软件冠军,投出您宝贵的一票今年继续夺冠! 评选传送门

jfinal模板引擎select等动态标签的封装

直接上代码,我也不知道这个玩法对不对,反正这样玩不用再去查数据字典了,封装的layui的

#--下拉选--#
#define select(name,title,table,code,text,extend,verify,value)
<select name="#(name)" lay-verify="#(verify)" lay-search>
  <option value="">选择#(title)可搜索</option>
  #for(x:xKit.getD(table,code,text,extend))
  <option value="#(xKit.getFirst(x)??)" #if(value==xKit.getFirst(x)) selected #end>#(xKit.getLast(x)??)</option>
  #end
</select> 

下面是工具类xkit
    //查询数据字典
    public static List<String> getD(String table,String code,String text,String extend){
        List<String> l = new ArrayList<String>();
                List<Record> ls = Db.find(Db.getSqlPara("fD", 
                            Kv.by("table", table)
                            .set("text",text)
                            .set("code",code)
                            .set("extend",extend)));
        for (Record record : ls) {
            l.add(record.getStr(code)+","+record.getStr(text));
        }
        return l;
    }
    public static String getFirst(String s){
        return s.split(",")[0];
    }
    public static String getLast(String s){//emptyToNull(String str)
        return s.split(",")[1];
    }
    //下面是用法
    <div class="layui-form-item" pane>
    <label class="layui-form-label">标题</label>
    <div class="layui-input-block">
    #@radio("title","标题","blog","id","title","","required","308892119093739520") 
     #@layuploads("title","标题","required","")  
    </div>
  </div>


评论

  • 05-11 16:56
    简化使用,减少代码冗余的封装都是可以的, just do it
  • 05-11 17:20
    开始用的ajax,页面渲染太慢了,越来越发现模板引擎的强大之处@JFinal
  • 05-11 17:31
    select(name,title,table,code,text,extend,verify,value),我个人觉得参数能够少点就好了,把常规的属性值放到define 中默认就好了,
    或者你定义一个这样,#define _select() #end 方法,不对外提供此方法
    通过简洁的命名来设置一些默认参数(让对外暴露API再简单点),
    我觉得这个是你实践中可以注意的

    如果太过于复杂的调用API,记忆/学习/使用成本太高了,你不如直接把那个比较复杂的input啥的使用原生的就好了。
  • 05-11 18:14
    真不错我就没想到这样封装,看到你的之后 我吧我前段有好多东西都封装了
  • 05-16 06:52
    @爪爪 重新封装之后的能分享出来学习学习吗?
  • 发送