freemarker常见的一些用法(一)

今天给大家介绍一下freemarker基本用法,例如:if、 list、 判断是否为空、获取值等等之类的。

在使用之前要先在模板中设置值,这里我使用的是SpringMVC中的设置值方法,下面看下案例:

 @RequestMapping(value = {"contentupdate"},method = RequestMethod.GET)
    public String contentUpdate(HttpServletRequest request,Map model){
        String id=request.getParameter("id");
        FloorContent floorContent=floorContentApi.getFloorContent(id);
        Floor floor=new Floor();
        model.put("contentName",floorContent.getName());
        Copys.create().from(floorContent.getFloor()).excludes("floor").to(floor);
        model.put("floorName",floor.getName());
        model.put("floorId",floor.getId());
        model.put("showIndex",floorContent.getShowIndex());
        List<Floor> list=floorApi.getList();
        model.put("list",list);
        model.put("type",floorContent.getType());
        model.put("contentImageUrl",floorContent.getContentImageUrl());
        model.put("linkUrl",floorContent.getLinkUrl());
        model.put("picSearchContent",floorContent.getPicSearchContent());
        model.put("id",floorContent.getId());
        System.out.println("json:"+Jsons.toJson(model));
        return "floorcontent/content-update";
    }

从例子中可以很明显的看出,只要在map中设置值就可以了,非常方便。

下面就介绍如何在html中取值操作:

  <#list list as floor>
      <#if floorId == floor.id>
          <option value="${floor.id}" selected="selected">${floor.name}</option>
       <#else>
            <option value="${floor.id}">${floor.name}</option>
        </#if>
  </#list>

这个例子可以很明显的看出:list表示循环、if表示判断、${字段名称}表示取值。

但是有一点需要注意的是如果想要判断是否为null则不能像java一样直接判断,freemarker有自己一套独特的判断方法。

我这里举一个应用的例子,不过这个例子只是判断是否为null的一种方法。

 <#if contentImageUrl?exists>
     <label for="" class="col-sm-2 control-label" style="margin-left: -20px;">图片路径:</label>            
  </#if>

如果大家想要了解判断不为空的其它方法,或者是如果为空要怎么赋初始值之类的方法,我在接下来的博客中会进行介绍。

如果大家想要源代码或者对文章有啥异议都可以加我QQ:208017534  欢迎打扰哦!!!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编码小白

ofbiz方法一 条件查询createConditionList

一、方法代码 /** * Parses input parameters and returns an <code>EntityCondition...

2685
来自专栏三好码农的三亩自留地

Java反射—写给自己的总结

上面反射是Oracle官方文档的定义,反射能够突破访问权限控制,这还是很优秀的,但是,问题来了,为什么需要反射或者说什么情况下需要用反射?

1322
来自专栏海天一树

小朋友学C++(14):两数交换

之前学C语言的时候,咱们直接在main函数中使用“异或”位运算符,很容易实现了两数交换。 本节课将在此基础上,把交换两个数的算法,封装到swap函数中。这样不管...

2767
来自专栏jeremy的技术点滴

koa框架源码解读

3538
来自专栏pangguoming

Proguard使用最新,最全教程,亲自试验

最近公司有一个项目,是外包项目,由于对方也有技术人员,出于技术上的保密,需要对class文件进行二次处理,于是网上找了好久,只发现Proguard是用的最广泛而...

3123
来自专栏海说

单元测试基本方法

依照类型划分,单元测试方法可以划分为两大类。一类是针对public方法进行测试,另一类是针对private方法进行测试。 public方法测试 public方法...

2010
来自专栏技术墨客

Spring和性——数据的类型转换

在字符串到实体转换一文中介绍了Spring核心框架中使用PropertyEditor将任何字符串转换为数字、实体的方法。除了字符串到实体,Spring还提供了更...

1493
来自专栏冰霜之地

iOS如何优雅的处理“回调地狱Callback hell”(二)——使用Swift

在上篇中,我谈到了可以用promise来解决Callback hell的问题,这篇我们换一种方式一样可以解决这个问题。

1532
来自专栏函数式编程语言及工具

Scalaz(47)- scalaz-stream: 深入了解-Source

   scalaz-stream库的主要设计目标是实现函数式的I/O编程(functional I/O)。这样用户就能使用功能单一的基础I/O函数组合成为功能完...

2725
来自专栏函数式编程语言及工具

Scalaz(50)- scalaz-stream: 安全的无穷运算-running infinite stream freely

scalaz-stream支持无穷数据流(infinite stream),这本身是它强大的功能之一,试想有多少系统需要通过无穷运算才能得以实现。这是因为外界...

1886

扫码关注云+社区