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 条评论
登录 后参与评论

相关文章

来自专栏xingoo, 一个梦想做发明家的程序员

MFC中注释含义

下面是 CStdioFile 类的部分列表,其中使用了 MFC 在其类中按类成员的用法划分它们时所采用的大多数标准注释: class CStdioFile :...

1747
来自专栏Google Dart

AngularDart 4.0 高级-管道 顶

每个应用程序都以一个简单的任务开始:获取数据,转换它们,并将它们展示给用户。 获取数据可以像创建本地变量一样简单,也可以像通过WebSocket传输流数据一样复...

542
来自专栏编程坑太多

java:工作中常用到的工具类

963
来自专栏懒人开发

ssm简单总结

项目原因, 最近在ssm上面多花了些时间 由于改需求,还未完成 这里简单写一下自己的理解和不足

743
来自专栏iOS技术

打造开源第一 iOS 图片浏览器 (支持视频)闲谈

本文主要讲述 YBImageBrowser 的一些功能技术细节,代码架构思路,设计模式选择等,希望对组件原理感兴趣的朋友有所帮助,也可以作为如何高效构建图片浏览...

503
来自专栏青玉伏案

窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用

  协议与委托代理回调在之前的博客中也是经常提到和用到的在《Objective-C中的委托(代理)模式》和《iOS开发之窥探UICollectionViewCo...

2408
来自专栏iKcamp

翻译连载 |《你不知道的JS》姊妹篇 |《JavaScript 轻量级函数式编程》- 第 3 章:管理函数的输入

原文地址:Functional-Light-JS 原文作者:Kyle Simpson-《You-Dont-Know-JS》作者 第 3 章:管理函数的输入(In...

2597
来自专栏Java技术栈

JDK8之新特性扩展篇

之前分篇章讲了一些JKD8中添加的新特性,还有一些新特性这里也一并讲下。 BASE64 base64编码解码已经被加入到了jdk8中了。 import java...

3286
来自专栏WindCoder

Java设计模式学习笔记—适配器模式

文章最后“Java设计模式笔记示例代码整合”为本系列代码整合,所有代码均为个人手打并运行测试,不定期更新。本节内容位于其Adapter包(package)中。

661
来自专栏QQ空间开发团队的专栏

iOS 高性能图片架构与设计

一个优秀的图片组件应该具有这些特性:集并发控制,请求合并,下载,缓存,缓存自动淘汰,图片处理,动画的从数据源到图片显示的一站式解决方案。做到图片加载展示如丝般顺...

2.2K0

扫码关注云+社区