Подтвердить что ты не робот

Функция строковой скорости

Я только начинаю использовать 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 для атрибутов. Мне нужно изменить первый символ в верхний регистр.

Кто-нибудь знал, как это сделать?

4b9b3361

Ответ 1

Вы можете использовать стандартные java-методы для этих объектов. Если s_attribute.name - это тип String, вы можете напрямую использовать $s_attribute.name.toUpperCase() или для использования вашего конкретного случая $s_attribute.name.substring(0,1).toUpperCase() и $s_attribute.name.substring(1).toLowerCase()

Ответ 2

Существует метод capitalize() в DisplayTool:

get${display.capitalize($s_attribute.name)}()

Ответ 3

Вы можете просто создать 2 метода getName() и getName() то при использовании ${s_attribute.name} скорость будет использовать getName(), а при использовании ${s_attribute.name} скорость будет использовать метод getName().

Из Руководство по скорости:

Правила поиска недвижимости

Как уже упоминалось ранее, свойства часто относятся к методам родительский объект. Скорость очень умна, когда выясняется, какой метод соответствует запрашиваемому свойству. Он пробует разные альтернативы, основанные на нескольких установленных соглашениях об именах. точная последовательность поиска зависит от того, будет ли имя свойства начинается с буквы верхнего регистра. Для имен нижнего регистра, таких как $customer.address, последовательность

getaddress()
getAddress()
get("address")
isAddress()

Для имен свойств верхнего регистра, таких как $customer.Address, он немного отличается:

getaddress()
getAddress()
get("address")
isAddress()

Что я предлагаю, так это то, что вы обрабатываете его в своем объекте на сервере.

Ответ 4

Если вы используете commons-lang, вы можете использовать класс StringUtils:

context.put("StringUtils", org.apache.commons.lang3.StringUtils.class);

Затем в вашем шаблоне:

...
return  get$StringUtils.capitalize(s_attribute.name)();
...