我不知道在Velocity中是否有办法做到这一点:

我有一个用户POJO,一个名为Status的属性,它看起来像枚举(但不是,因为我被困在Java 1.4上),定义看起来像这样:

public class User {

// default status to User

private Status status = Status.USER;

public void setStatus(Status status) {

this.status = status;

}

public Status getStatus() {

return status;

}

而状态是静态的内部类:

public static final class Status {

private String statusString;

private Status(String statusString) {

this.statusString = statusString;

}

public final static Status USER = new Status("user");

public final static Status ADMIN = new Status("admin");

public final static Status STATUS_X = new Status("blah");

//.equals() and .hashCode() implemented as well

}

使用这种模式,用户状态可以很容易地在条件中进行测试

if(User.Status.ADMIN.equals(user.getStatus())) ...

…而不必引用状态ID,任何魔术数字等的任何常量.

但是,我不知道如何使用VTL在我的Velocity模板中测试这些条件.我想根据用户的状态打印一个简单的字符串,如:

Welcome ${user.name}!

#if($user.status == com.company.blah.User.Status.USER)

You are a regular user

#elseif($user.status == com.company.blah.User.Status.ADMIN)

You are an administrator

#etc...

#end

但是这会抛出一个异常,看起来像是org.apache.velocity.exception.ParseErrorException:在webpages / include / dashboard.inc中遇到“User”[第10行,第21列]期望的是:“[”…“

从the VTL User Guide起,没有提到在VTL中直接访问Java类/静态成员,似乎条件的右侧(RHS)只能是数字文字,字符串文字,属性引用或方法引用.

那么有什么办法可以访问Velocity模板中的静态Java属性/引用吗?我知道作为解决方法,我可以在我的控制器中嵌入状态ID或其他标识符作为参考(这是使用Velocity作为View技术的Web MVC应用程序),但是我强烈不想嵌入任何魔术视图层中的数字或常量.

velocity java 静态方法_java – 如何访问Velocity模板中的静态成员?相关推荐

  1. java里上下文对象,java-在百里香模板中的Web上下文对象上发出...

    我试图在thymeleaf 3.0.3和Spring Boot 1.5.1的模板中调用Web上下文对象上的方法,例如#request和#response. 我不断收到这样的错误: org.spring ...

  2. freemarker java静态方法_java Freemarker页面静态化实例详解

    freemarker freemarker 是一个用 java 语言编写的模板引擎,它基于模板来生成文本输出.freemarker与 web 容器无关,即在 web 运行时,它并不知道 servlet ...

  3. java连接打印机访问被拒绝_java – 尝试访问spring security中的登录页面时访问被拒绝的异常...

    我正在使用基于java的spring security.我创建了自定义访问决策选民impl. 但是当我运行应用程序时,我无法打开登录页面,因为它说,访问被拒绝. 这是在我添加自定义访问决策选民impl ...

  4. Java线程中的静态方法_Java多线程3:Thread中的静态方法

    Thread类中的静态方法 Thread类中的静态方法表示操作的线程是"正在执行静态方法所在的代码块的线程".为什么Thread类中要有静态方法,这样就能对CPU当前正在运行的线程 ...

  5. java word标签替换_JAVA实现替换WORD模板中的文字和图片

    1.本来有其他方法可以实现的,但是由于jar包一直有问题所以换了种,要是还有其他的更好的方法,希望可以讨论 2.废话不说直接上代码: 3.我自己加了个生成图片的方法,也可以不需要直接用已经存在的图片替 ...

  6. java excel 模板 替换_JAVA POI替换EXCEL模板中自定义标签(XLSX版本)满足替换多个SHEET中自定义标签...

    个人说明:为了简单实现导出数据较少的EXCEL(根据自定义书签模板) 一.替换Excel表格标签方法 ``` /** * 替换Excel模板文件内容 * @param map * 需要替换的标签建筑队 ...

  7. 配置管理和Java开发_Java开发环境之------MyEclipse中服务器Server的配置,管理和启动...

    1,MyEclipse中服务器的管理(以tomcat为例) (1),菜单--->Window--->Preferences--->MyEclipse--->Servers--- ...

  8. java 捆绑_java – 如何在jar文件中捆绑图像

    在这里似乎有两个问题: >如何让NetBeans在构建项目时将jar包含在生成的jar中? >如何从jar中访问映像文件? 此应用程序适用于NetBeans 6.8并解决了两个方面的问题. ...

  9. java机顶盒_Java技术在数字电视机顶盒中的应用

    介绍数字电视广播一多媒体家庭平台(DVB一MHP)是通用的平台,允许用户透明地访问一定范围的多媒体服务,它包括软件结构和硬件设备.系统软件包括实时操作系统.交互引擎.后台数据库.浏览器和应用服务程序管 ...

最新文章

  1. SLAM和三维重建有什么区别?
  2. ArcGIS 复制要素
  3. 在没有安装有mvc3的主机上部署asp.net mvc3网站,需要包含的DLL文件
  4. 将JavaScript集成到QML中
  5. 京东JDHBase异地多活实践
  6. Java 数组常用操作二(扩充、扩容、重复数据、动态数组、数组差集、数组交集、查找指定元素、判断是否相同、数组合并)
  7. mysql 停从库_不停止 MySQL 服务增加从库的两种方式
  8. 中文短文本的实体识别实体链接,第一名解决方案
  9. 闭关修炼——six——Spring
  10. Qt 21行实现 十六进制字符串互转QByteArray QString Hex互转QByteArray
  11. 机器学习 - 概念学习
  12. Cryengine渲染引擎剖析(转)
  13. doctrine2 mysql_doctrine2到底是个什么玩意
  14. 【Linux内核分析与应用-陈莉君老师】课程相关索引
  15. 安卓机如果相册不选图片就退出_2020最新制作动态相册技巧
  16. Linux-打包、压缩命令
  17. 背景的样式(雪碧图)
  18. python学习笔记4(模块
  19. 反驳生命的起点是rna_生命起源之谜:RNA世界假说将迎来终结?
  20. 产品经理设计产品流程都有哪些步骤

热门文章

  1. JS获取当前时间,例如2019-10-01格式
  2. python怎么通过占位符_如何输入占位符?
  3. 假设linux分配给u盘设备名是,嵌入式linux开发基础试卷-应用物理A答案
  4. oracle rman备份 归档模式,Oracle RMAN备份归档与非归档模式
  5. 嵌入式在线html编辑器,嵌入式HTML编辑器的设计与实现.ppt
  6. nested exception is java.lang.UnsatisfiedLinkError: no jacob-1.19-x64 in java.library.path
  7. Hutool:时间日期工具
  8. 如何利用MySQL Workbench创建Model EER 图
  9. Android开发笔记(八十三)多语言支持
  10. thinkphp5 open_basedir 补充