velocity的一些用法

简介:

velocity模板其实就是java不分语法的翻译,用到的属性还是java的方法,get,set,等

1.截取部分字段substring

复制代码
1 原始字符串:$!ag.tagValue,也许很长,前端页面展示时需要截取字符串。
2 #set($str=$!ag.tagValue)
3 
4 #if($str.length()>30)
5     #set($str=$str.substring(0,30))
6     $str ...
7 #else
8     $!ag.tagValue
9 #end
复制代码

使用substring(begin,end)要注意,结束位置为:end索引-1

2.分割成数组split

复制代码
 1 #if($!{result.creType} && $result.creType)
 2   #foreach ($element in $result.creType.split(","))
 3     #if($element == 1)
 4        <script>document.getElementsByName("cretype")[0].checked="checked";</script>
 5     #elseif($element == 2)
 6        <script>document.getElementsByName("cretype")[1].checked="checked";</script>
 7     #else
 8        <script>document.getElementsByName("cretype")[2].checked="checked";</script>              
 9     #end
10   #end
11 #end 
复制代码

3.说到split成数组,就要看数组的几个可以用的方法

velocity 中的数组对应 Java 中的 List 对象。对于 Java 原生 Array 对象, 只能够 #foreach 进行遍历,无法使用  a r r [ 0 ] arr.get(0) 方法。

4.所以学java从不用数组,而用list

--事实上,list很方便,但list比数组效率低很多倍

  • $myarray.isEmpty()list是否为空
  • $myarray.size()获取list元素个数
  • $myarray.get(2)获取list指定下标的元素
  • $myarray.add()增加元素

5.计数用$velocityCount

在foreach中velocityCount表示循环的次数,从1开始,代表第一个循环。

6.空null和空字符串""的判断

在velocity中,非null被认为是真的,所以,判断null可以用

1 #if($!变量名)
2  ……
3 #else
4  ……
5 #end

或者既可以判断null也可以判断空字符串

1 #if("$!varName" != "")
2  不为null 或 ""
3 #else
4  ……
5 #end

7.基本语法错误#end不要忘

最开始的时候经常#if就完了报错,后来都是写完if就end,最后写中间。

8.#macro其实也很简单

原来感觉不懂不敢碰,自从写了个velocity分页后就忽然觉得宏不要太好用。事情是这样的,当时地区三级联动需要多处调用,提取出成公共模块,用#parse导入后出现冲突,因为一个页面用两次地区联动代码,id就重复了。于是想把id给变成参数,当我需要这个公用代码的时候,把id当参数传进去,最后render的结果就是html代码的id为我的参数。这样看来,宏就是一个函数。

想要用宏,先写好,然后parse,然后调用。

一个简单的宏函数:

1 #macro( d )
2 <tr><td></td></tr>
3 #end

使用它:如果在本页面,直接#d,如果是单独写了一个模板文件,那么需要先#parse(文件路径),再#d,如同js外部引用。

传参数的宏:

1 #macro( tablerows $color $somelist )
2 #foreach( $something in $somelist )
3 <tr><td bgcolor=$color>$something</td></tr>
4 #end
5 #end

一个综合使用,分页

 9引用外部文件#include和#parse

我开始经常用#include,后来发现刷新页面没变化,用#parse就好了。字面理解,一个是直接拿过来,一个是解析后。所以,如果是传html代码,可以直接include;若是包含velocity代码的要编译#parse.



本文转自Ryan.Miao博客园博客,原文链接:http://www.cnblogs.com/woshimrf/p/5169388.html,如需转载请自行联系原作者


相关文章
|
前端开发 Java 调度
springboot整合SSE技术开发经验总结及心得
springboot整合SSE技术开发经验总结及心得
2926 0
mac zsh: command not found: pip解决方法
mac zsh: command not found: pip解决方法
1410 0
|
前端开发 Java 数据库连接
领域驱动设计(DDD):分层架构
在应用系统开发中,采用严格的、单一的、真正的的分层架构是可以的,但实际上我们已经采用了多种架构模式设计系统。当多种不同范式的架构混合在一起,你会不会出现“指鹿为马”的现象呢?
领域驱动设计(DDD):分层架构
|
11月前
|
人工智能 Java API
支持 40+ 插件,Spring AI Alibaba 简化智能体私有数据集成
通过使用社区官方提供的超过 20 种 RAG 数据源和 20 种 Tool Calling 接口,开发者可以轻松接入多种外部数据源(如 GitHub、飞书、云 OSS 等)以及调用各种工具(如天气预报、地图导航、翻译服务等)。这些默认实现大大简化了智能体的开发过程,使得开发者无需从零开始,便可以快速构建功能强大的智能体系统。通过这种方式,智能体不仅能够高效处理复杂任务,还能适应各种应用场景,提供更加智能、精准的服务。
1494 93
|
Docker 容器
Docker 安装 ELK
Docker 安装 ELK
219 0
|
JavaScript
省、市、区三级联动
省、市、区三级联动
|
SQL JSON 关系型数据库
JSON_TABLE 两全其美
在这篇博客文章中,我将向您展示如何做到这一点,并讨论JSON_TABLE如何启用使用SQL处理JSON数据的新方法。
8720 0
|
SQL 开发框架 前端开发
低代码探索:Java模板引擎技术
本篇将探索代码生成技术。因为业务开发中使用Java语言较多,所以这里以Java作为背景语言。
390 0
|
XML 缓存 前端开发
Spring Boot源码学习:自动配置与自定义注解详解
@RestContrller :此注解标记的类下的 所有 方法均会返回一个 domain 对象以代替视图@Controller、@ResponseBody 的缩写使用 Jackson2 以及 MappingJackson2HttpMessageConverter 类自动转换对象为 JSON @SpringBootApplication:快捷注释,包含以下内容@Configuration:将该类标记为上下文 bean 对象的源@EnableAutoConfiguration:@ComponentScan
|
自然语言处理 IDE Java
有了这12款idea插件后,室友再也不叫我小白了
搞Java开发用什么软件,当然是神器idea了,那么,idea的插件对于你来说就是必不可少的了,不仅可以提高自己的编码效率,还可以减轻工作时的枯燥烦闷。接下来就来说说,作为一名小白,我在平时敲代码用的什么插件吧。
577 0
有了这12款idea插件后,室友再也不叫我小白了