我有一个使用requiredProperty
包含一个数字,但速度变量是字符串的Maven archtype。所以,在我的模板,我不能,如果这个属性是多了一些更大的考验:Maven原型所需财产编号
#if($myVar gt 5)
我已经测试了以下solution没有成功。
我也试过这样:
#set($intVar = Integer.parseInt($myVar))
这也是失败的原型产生。
有什么建议吗?
我有一个使用requiredProperty
包含一个数字,但速度变量是字符串的Maven archtype。所以,在我的模板,我不能,如果这个属性是多了一些更大的考验:Maven原型所需财产编号
#if($myVar gt 5)
我已经测试了以下solution没有成功。
我也试过这样:
#set($intVar = Integer.parseInt($myVar))
这也是失败的原型产生。
有什么建议吗?
你不能从Velociy中引用类,所以Integer.parseInt
将不起作用。但是,由于在Java中任何静态方法都可以作为实例方法调用,并且Velocity只是变相的Java,所以您可以在任何整数上调用parseInt
。所以,你可以试试这招:
#if ($myVar.length().parseInt($myVar) gt 5)
你得到从你假设你有,$myVar
的一个变量开始的整数举行。
我已经实现基于原型描述符中提供一个正则表达式验证用户输入:
https://issues.apache.org/jira/browse/ARCHETYPE-487
希望它会解决这个问题的Maven Archetype插件的未来版本。
它不是优雅的,但它的工作原理;) – krampstudio
另一个更清洁的选项是将Integer.class设置为Velocity变量,当你建立在Java中的上下文,然后引用,即在Java中:context.put(“intClass”,Integer.class);和Velocity:$ intClass.parseInt($ myVar) – centic
除了Velocity部分是由Maven处理的,所以这需要在Maven中深入挖掘。 –