我刚开始使用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函数时。我需要将第一个字符更改为大写字母。
有人知道怎么做吗?
答案 0 :(得分:31)
您可以在这些对象上调用标准java方法。如果s_attribute.name
是String类型,您可以直接使用$s_attribute.name.toUpperCase()
或针对特定情况使用$s_attribute.name.substring(0,1).toUpperCase()
和$s_attribute.name.substring(1).toLowerCase()
答案 1 :(得分:11)
DisplayTool
中有capitalize()
方法:
get${display.capitalize($s_attribute.name)}()
答案 2 :(得分:3)
如果您使用的是commons-lang
,则可以使用StringUtils
类:
context.put("StringUtils", org.apache.commons.lang3.StringUtils.class);
然后在你的模板中:
...
return get$StringUtils.capitalize(s_attribute.name)();
...
答案 3 :(得分:2)
您可以创建2个方法getName()
和getname()
然后,当您使用${s_attribute.name}
时,getname()
会使用${s_attribute.Name}
,当您使用getName()
时,速度将使用getaddress()
getAddress()
get("address")
isAddress()
方法。
属性查找规则
如前所述,属性通常指的是方法 父对象。在确定哪种方法时,速度非常聪明 对应于要求的财产。尝试不同 基于几种既定命名惯例的备选方案。该 确切的查找顺序取决于属性名称 以大写字母开头。对于小写名称,例如 $ customer.address,序列是
getAddress() getaddress() get("Address") isAddress()
对于像$ customer.Address这样的大写属性名称,它略有不同:
{{1}}
我建议你在后端的物体中处理它。