当前位置: 首页 > 知识库问答 >
问题:

Velocity解析器在解析java代码模板时崩溃

端木令雪
2023-03-14

当试图使用java源代码作为Velocity的模板时,它会在模板的这一行崩溃:

/*  @see panama.form.Validator#validate(java.lang.Object) */

除了这个例外:

Exception in thread "main" org.apache.velocity.exception.ParseErrorException: Lexical error,   Encountered: "l" (108), after : "." at *unset*[line 23, column 53]
at org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1301)
at org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1265)
at org.apache.velocity.app.VelocityEngine.evaluate(VelocityEngine.java:199)

显然,它接受宏的#validate并在试图解析宏的参数时崩溃。对此有什么办法吗?

编辑

我知道我可以转义模板文件中的#字符,但其中有相当多的字符也可能会时不时地更改,所以我更喜欢不需要手动更改文件的方法。

共有1个答案

邴和雅
2023-03-14

第一个选项从这里尝试这个解决方案:转义VTL指令

VTL指令可以用反斜杠字符(“\”)转义,转义方式类似于有效的VTL引用。

## #include( "a.txt" ) renders as <contents of a.txt>
#include( "a.txt" )

## \#include( "a.txt" ) renders as #include( "a.txt" )
\#include( "a.txt" )

## \\#include ( "a.txt" ) renders as \<contents of a.txt>
\\#include ( "a.txt" )

第二个选项是使用这个工具[EscapeTool][2]。用于在速度模板中处理逃逸的工具。

  #set( $H = '#' )
  $H$H
 类似资料:
  • 模板解析器类可以解析你的视图文件中的伪变量。它可以解析简单的变量或者以变量作为标签的结构。如果你以前没有用过模板引擎,那么伪变量如下所示:<html> <head> <title>{blog_title}</title> </head> <body> <h3>{blog_heading}</h3> {blog_entries} <h5>{title}</h5> <p>{body}</p> {/bl

  • 模板解析类可以对你视图文件中的伪变量进行简单的替换,它可以解析简单的变量和变量标签对。 如果你从没使用过模板引擎,下面是个例子,伪变量名称使用大括号括起来: <html> <head> <title>{blog_title}</title> </head> <body> <h3>{blog_heading}</h3> {blog_e

  • 问题内容: 我需要以下工具: 方便地解析Java源代码并轻松访问给定的元素。 轻松生成源代码文件,轻松将数据结构转换为代码 有什么好的技巧,库,框架,工具吗?谢谢你的帮助。 问题答案: 从Java 6开始,编译器在JDK中包含一个API。通过它,您可以通过API 访问Java解析器的结果。JDK5以Mirror API 的形式提供了相同的功能。有一个很好的介绍性文章在这里。 我见过的最好的代码生成

  • 本文向大家介绍Python解析json代码实例解析,包括了Python解析json代码实例解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Python解析json代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 什么是json格式: JSON(JavaScript Object Notation):一种轻量级数据交换格式

  • 我使用SpringBoot和mySql数据库。 我正在尝试筛选搜索通过一个表格的团队。最初,这个表是一个thymeleaf表(参见我的相关SO问题),但在用尽了互联网上所有可用的资源后,我决定以不同的方式实现搜索,但没有成功。 我发现了一个非常有用的网站,它有一个实用的,相关的例子,我想要实现什么。 解析模板“索引”时出错,模板可能不存在,或者任何已配置的模板解析程序都无法访问 Thymeleaf

  • 解释器模式 解释器模式虽然听上去有些费解,但是如果用示例说明一下就不难理解了。我们知道在C语言中,关于变量的定义是这样的:一个不以数字开始的由字母、数字和下划线构成的字符串。这种形式的表达式可以用状态自动机解决,当然也可以用解释器的方式解决。 typedef struct _Interpret { int type; void* (*process)(void* pDa