速度字符串function
我刚开始使用Java Velocity。 现在我想创建一个java类模板。
package $app.package_namespace public class ${app.name}Station { #foreach($s_attribute in $app.station) $s_attribute.type $s_attribute.name, #end public $app.name Station(#foreach($s_attribute in $app.station) $s_attribute.type $s_attribute.name; #end) { #foreach($s_attribute in $app.station) $s_attribute.name=$s_attribute.name; #end } #foreach($s_attribute in $app.station) public ${s_attribute.type} get${s_attribute.name}() { return get${s_attribute.name}(); } #end }
问题是s_attribute.name第一个字符是小写。 当我为属性创建getter和setter函数时。 我需要将第一个字符更改为大写字母。
有谁知道怎么做?
您可以在这些对象上调用标准java方法。 如果s_attribute.name
是String类型,你可以直接使用$s_attribute.name.toUpperCase()
或者你的特定情况使用$s_attribute.name.substring(0,1).toUpperCase()
和$s_attribute.name.substring(1).toLowerCase()
DisplayTool
有capitalize()
方法:
get${display.capitalize($s_attribute.name)}()
如果您使用commons-lang
,则可以使用StringUtils
类:
context.put("StringUtils", org.apache.commons.lang3.StringUtils.class);
然后在你的模板中:
... return get$StringUtils.capitalize(s_attribute.name)(); ...
您可以创建2个方法getName()
和getname()
然后当您使用${s_attribute.name}
velocity将使用getname()
,当您使用${s_attribute.Name}
velocity将使用getName()
方法。
从速度指南 :
物业查询规则
如前所述,属性通常引用父对象的方法。 在确定哪个方法对应于所请求的属性时,Velocity非常聪明。 它根据几个已建立的命名约定尝试不同的替代方案。 确切的查找顺序取决于属性名称是否以大写字母开头。 对于小写名称,例如$ customer.address,序列为
getaddress() getAddress() get("address") isAddress()
对于像$ customer.Address这样的大写属性名称,它略有不同:
getAddress() getaddress() get("Address") isAddress()
我的建议是你在后端的对象中处理它。