速度字符串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()

DisplayToolcapitalize()方法:

 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() 

我的建议是你在后端的对象中处理它。