速度字符串功能

时间:2011-08-09 15:07:36

标签: java velocity

我刚开始使用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函数时。我需要将第一个字符更改为大写字母。

有人知道怎么做吗?

4 个答案:

答案 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() 方法。

来自Velocity guide

  

属性查找规则

     

如前所述,属性通常指的是方法   父对象。在确定哪种方法时,速度非常聪明   对应于要求的财产。尝试不同   基于几种既定命名惯例的备选方案。该   确切的查找顺序取决于属性名称   以大写字母开头。对于小写名称,例如   $ customer.address,序列是

getAddress()
getaddress()
get("Address")
isAddress()
     

对于像$ customer.Address这样的大写属性名称,它略有不同:

{{1}}

我建议你在后端的物体中处理它。