我试图在Velocity #foreach指令中获得一个从零开始的计数器.
如果我使用:
#foreach ($item in $list)
item.getName() : $velocityCount
#end
Run Code Online (Sandbox Code Playgroud)
我会得到:
Fred : 1
Wilma : 2
Barney : 3
Run Code Online (Sandbox Code Playgroud)
但是我需要:
Fred : 0
Wilma : 1
Barney : 2
Run Code Online (Sandbox Code Playgroud)
从速度模板的角度来看,解决方案必须尽可能简单.
编辑:
我可以使用:
#foreach ($item in $list)
#set( $num = $velocityCount - 1 ) //The white space in mandatory
item.getName() : $num
#end
Run Code Online (Sandbox Code Playgroud)
它的工作原理.但我正在寻找更优雅的解决方案.
编辑2:
我也需要基于单一的计数器.也就是说,在同一模板中,我很可能会有一个#foreach指令需要一个基于零的计数器和另一个#foreach需要一个基本计数器的指令.
是否可以将Velocity引用设置为"null"或"undefined"?
#set- 建立参考格式的值:
# [ { ] set [ } ] ( $ref = [ ", ' ]arg[ ", ' ] )用法:
$ref- 赋值的LHS必须是变量引用或属性引用.
arg- 赋值的RHS,arg如果用双引号括起来解析,如果用单引号括起来则不解析.如果RHS评估为null,则不会将其分配给LHS.(强调我的)
我找不到等效的#unset宏.
我一直在使用Apache的Velocity引擎和自定义模板.
问题是,我无法生成具有相应换行符的String.我尝试了几乎所有我找到的东西,例如使用$ esc.n和$ esc.newline(我已经在我的项目中使用了逃生工具)但似乎我目前使用的版本不支持它(1.4 ),检查是否可以使用'\n','\\n'甚至'\\\n',但同样的事情.
有没有人对此有任何解决方案?
我希望我的velocityengine从设计的路径中寻找模板.我这样做了:
<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="velocityProperties">
<value>
resource.loader=class
class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
class.resource.loader.resourceLoaderPath=/mytemplates
</value>
</property>
Run Code Online (Sandbox Code Playgroud)
但仍在类文件夹中查找模板.任何的想法?
我在速度模板中获取了一个java对象.该对象有一个double值,我想格式化为2位小数并将其显示在我的模板中.
我得到一个对象的类是这样的
Class Price
{
double value;
String currency;
}
Run Code Online (Sandbox Code Playgroud)
在我的力度模板中,即时获取这样的值
$price.value
Run Code Online (Sandbox Code Playgroud)
但我需要在显示之前将其格式化为2位小数.
我想转换
23.59004至23.59
35.7至35.70
3.0至3.00
9至9.00
请告诉我如何在速度模板中执行此操作?我搜索了很多,发现我可以使用速度工具,但没有相关的例子吗?我可以在模板中使用力度工具吗?
我一直试图禁用Velocity日志,到目前为止我发现的唯一方法是获得积极的结果是设置:
runtime.log.logsystem.class=org.apache.velocity.runtime.log.NullLogSystem
Run Code Online (Sandbox Code Playgroud)
但是在velocity.jar里面的velocity.properties里面.
我在Web应用程序(tomcat)上下文中使用了velocity.有没有办法禁用速度(通过设置以前的属性或其他)但不修改JAR?
无法修改任何CODE
提前致谢
我正在创建一个maven原型,并且在项目中生成了一个想要一个以生成项目的工件ID命名的类.
工件ID的格式如下:the-project-name并且应该命名类TheProjectNameMain.
我试图在我这样做,archetype-metadata.xml但我无法做到这一点.
<archetype-descriptor>
<requiredProperties>
<requiredProperty key="classNamePrefix">
<defaultValue>${WordUtils.capitalize(artifactId.replaceAll("-", " ")).replaceAll(" ", "")}</defaultValue>
</requiredProperty>
</requiredProperties>
</archetype-descriptor>
Run Code Online (Sandbox Code Playgroud)
正如你所看到我试图使用WordUtils(来自apache-commons),但我猜这是不可用的,因为我收到了一个错误.Error merging velocity templates:.....我也尝试了不同的组合,.replaceAll但我无法获得正确的格式.
在这种情况下,有没有人知道从a-hypenated-string到CamelCaseClassName的方法?
我们如何在Spring 5.0之后使用Velocity和Spring?
我有一个$ date定义为"星期几,月份日,年"ex:2013年2月26日星期二
我不知道$ date的定义在哪里,但我喜欢将小时添加到这个$ date变量,或者用小时创建一个变量,你知道我怎么能把它放在.vm文件中?
我讨厌速度,很少使用它,但有时我会在工作中被要求这样做.我永远无法弄清楚如何使用它.
我有这个
#foreach( $product in $browseSiteProducts )
alert("$product.productId");
#foreach( $stringList in $product.productId.split("|") )
alert("inner loop");
#end
#end
Run Code Online (Sandbox Code Playgroud)
$ browseSiteProducts是一个数组.或列表.管他呢.我甚至不知道.productId的第一个警报工作正常.我得到"|" 这是打印出来时的预期.然后内循环应该拆分为"|" 作为分隔符,并给我"内循环"的警报.但我总是得到24个警报,因为productId中有24个字符.所以split()没有正确地为我划界.我到底做错了什么?
谢谢凯尔