本期视频实现了发布评论时间自定义显示;

内容简介:使用了自定义方法以及直接访问java方法实现了发布时间自定义显示

作者:GK

自定义方法

我们想要实现类似于${ strutil.subString ("hello",1)} 这样的方法,在Beetl模板中直接使用函数。

一、集成Function 接口,实现call方法

call方法存在两个参数,一个是模板传输过来的参数列表Object[] objects,另外一个是beetl模板的上下文Context。

上下文中包含以下信息,需要用到可以自取。

byteWriter 输出流

template 模板本身

gt GroupTemplate

globalVar 该模板对应的全局变量

byteOutputMode 模板的输出模式,是字节还是字符

safeOutput 模板当前是否处于安全输出模式

其他属性建议不熟悉的开发人员不要乱动

有几个注意事项,需要注意下:

call方法要求返回一个Object,如果无返回,返回null即可

为了便于类型判断,call方法最好返回一个具体的类,如date函数返回的就是java.util.Date

call方法里的任何异常应该抛出成Runtime异常

实现代码如下:

package com.ibeetl.blog.function;

import org.beetl.core.Context;

import org.beetl.core.Function;

import java.text.SimpleDateFormat;

import java.util.Date;

/**

* @author GavinKing

* @ClassName: PrintTime

* @Description:

* @date 2018/12/11

*/

public class PrintTime implements Function {

@Override

public String call(Object[] objects, Context context) {

Date date = (Date) objects[0];

Date now = new Date();

Long fiveM = date.getTime() + (5*60*1000);

Long thM = date.getTime() + (30*60*1000);

Long oneH = date.getTime() + (60*60*1000);

if(now.getTime() < fiveM){

return "刚刚";

}

if(now.getTime() < thM){

return "半小时前";

}

if(now.getTime() < oneH){

return "一小时前";

}

SimpleDateFormat sdf = new SimpleDateFormat(objects[1].toString());

return sdf.format(date);

}

}

二、注册function函数

在beetl.properties 中,增加 FN.printTime = com.ibeetl.blog.function.PrintTime 进行注册。

三、在模板中使用

${printTime(msg.createTime!,"yyyy-MM-dd HH:mm:ss")}

这就可以使用我们自定义的方法了。

直接访问java类与方法

直接使用java方法,步骤没有那么复杂。

可以通过符号@来表明后面表达式调用是java风格,可以调用对象的方法,属性,比如:

${@user.getMaxFriend(“lucy”)}

${@user.maxFriend[0].getName()}

${@com.xxxx.constants.Order.getMaxNum()}

${@com.xxxx.User$Gender.MAN}

var max = @com.xxxx.constants.Order.MAX_NUM;

var c =1;

var d = @user.getAge(c);

%>

可以调用instance的public方法和属性,也可以调用静态类的属性和方法 ,需要加一个 @指示此调用是直接调用class,其后的表达式是java风格的。

我们在代码中新建一个类

package com.ibeetl.blog.function;

import java.text.SimpleDateFormat;

import java.util.Date;

/**

* @author GavinKing

* @ClassName: PrintTimeUtil

* @Description:

* @date 2018/12/11

*/

public class PrintTimeUtil {

public static String printTime(Date date,String format){

Date now = new Date();

Long fiveM = date.getTime() + (5*60*1000);

Long thM = date.getTime() + (30*60*1000);

Long oneH = date.getTime() + (60*60*1000);

if(now.getTime() < fiveM){

return "刚刚";

}

if(now.getTime() < thM){

return "半小时前";

}

if(now.getTime() < oneH){

return "一小时前";

}

SimpleDateFormat sdf = new SimpleDateFormat(format);

return sdf.format(date);

}

}

在模板中直接使用

${@com.ibeetl.blog.function.PrintTimeUtil.printTime(page.list[i+1].createTime,"yyyy-MM-dd HH:mm:ss")}

不用注册函数,直接使用类的static公共方法。

视频地址:下载下来会更清晰,视频比较长,可使用倍速看

beetl调用java方法_08.自定义方法以及直接访问java类方法---《Beetl视频课程》相关推荐

  1. java beetl 视频_08.Beetl自定义方法以及直接访问java类方法---《Beetl视频课程》

    本期视频实现了发布评论时间自定义显示: 内容简介:使用了自定义方法以及直接访问java方法实现了发布时间自定义显示 作者:GK 自定义方法 我们想要实现类似于${ strutil.subString ...

  2. java 方法 多参数_需要在Java方法中传递多个(20+)参数。这样做有效吗?

    我在Java类中有多个方法,其中每个方法都有20多个参数.我将在另一个类中为这个类创建一个对象并调用每个方法.通常我在Selenium Java中使用POM(页面对象模型). 所以在每个Page对象类 ...

  3. 视频教程-Java工程师必学系列课程之4--《Java Swing》视频课程-Java

    Java工程师必学系列课程之4--<Java Swing>视频课程 某知名科技公司技术总监,10年以上大型J2EE项目的实战研发经验,参与并主持开发"内蒙古电力集团考试系统&qu ...

  4. Java从小白到大牛第4篇项目实战视频课程2——Java版QQ-关东升-专题视频课程

    Java从小白到大牛第4篇项目实战视频课程2--Java版QQ-1778人已学习 课程介绍         本项目是Java SE技术实现的QQ2006聊天工具,所涉及到的知识点:Java面向对象.L ...

  5. java怎么调用void方法_如何使用反射在java中调用void方法

    如果我使用反射调用方法,我可以让它正常工作而不抛出空指针异常的唯一方法是在我调用的方法中返回一个int值. 例如,我想调用的方法: public int setScore(int n) { this. ...

  6. java 方法 示例_带有示例的Java EnumSetSupplementOf()方法

    java 方法 示例 EnumSet类complementOf()方法 (EnumSet Class complementOf() method) complementOf() method is a ...

  7. java 方法当参数_如何在Java中将函数作为参数传递?

    如何在Java中将函数作为参数传递? 这个问题在这里已有答案: Java Pass方法作为参数                                     14个答案 是否可以将方法作为参 ...

  8. 微信支付java版v2.0_刷卡支付-翟东平-专题视频课程

    微信支付java版v2.0_刷卡支付-1814人已学习 课程介绍         微信支付系列课程将讲解"刷卡支付"."扫码支付"."公众号支付&qu ...

  9. python调用java方法_python加载和使用java的类的方法

    在开发python项目的时候,有时候会用的java的jar包 有这么几个python的三方包可以用: pyjnius:bug list:https://github.com/kivy/pyjnius/ ...

最新文章

  1. tomcat8.5 远程访问 manager页面
  2. sklearn对三维矩阵降维代码实现
  3. python 模型 欺诈概率_python信用卡欺诈模型,最大似然参数设置/混淆矩阵
  4. python类内置装饰器(一分钟读懂)
  5. 你必须掌握的Python数据分析工具之Pandas
  6. 18.卷1(套接字联网API)---路由套接字
  7. 软考中级网络工程师真题资料
  8. lisp 角平分线_清华同方mds软件下载安装 清华英泰cad mds2002
  9. 申宝公司-两利好提振股市
  10. 计算机控制plc应用论文,PLC自动控制系系统在变频器中的运用
  11. 字体:等宽字体与比例字体 - Monospaced font Proportional font
  12. Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F
  13. 用我们的奋斗和梦想扬起青春的船帆
  14. set和hashset区别及用法
  15. 多版本谷歌chrome浏览器并存(谷歌浏览器从C盘移植)
  16. 什么是新零售电商系统?
  17. 1对多 只取一条 mysql_MySQL 多表关联一对多查询实现取最新一条数据的方法示例...
  18. CPP2022-28-期末模拟测试01
  19. SAP 外包和外协业务的区别
  20. 一文带你读懂“技术系统演化模式”

热门文章

  1. linux用命令行运行matlab的.mat文件
  2. laravel5.2总结--服务提供者,契约(Contracts)
  3. [Android]解决 Could not read entry xxx from cache taskArtifacts.bin
  4. 使用 ADOX 将 Table 添加到 Catalog 时报“类型无效”的原因和解决方法
  5. html 图片隐藏 一部分,如何在HTML / CSS中仅显示图像的一部分?
  6. hdu(杭电oj)输入输出练习题目总结
  7. SpringMVC_跟踪请求
  8. Linux 查看dns运行状态
  9. 如何查看网页缓存的密码
  10. FCK编辑器去掉html标签