Je commence juste à utiliser Java Velocity. Maintenant, je veux créer un modèle de classe 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
}
Le problème est que s_attribute.name le premier caractère est en minuscule. Quand je crée la fonction getter et setter pour les attributs. J'ai besoin de changer le premier caractère en majuscule.
Quelqu'un savait-il comment le faire?
Vous pouvez invoquer les méthodes standard Java sur ces objets. Si s_attribute.name
Est de type String, vous pouvez directement utiliser $s_attribute.name.toUpperCase()
ou pour votre cas spécifique utiliser $s_attribute.name.substring(0,1).toUpperCase()
et $s_attribute.name.substring(1).toLowerCase()
Il existe une méthode capitalize()
dans DisplayTool
:
get${display.capitalize($s_attribute.name)}()
Si vous utilisez commons-lang
vous pouvez utiliser la classe StringUtils
:
context.put("StringUtils", org.Apache.commons.lang3.StringUtils.class);
Puis dans votre modèle:
...
return get$StringUtils.capitalize(s_attribute.name)();
...
Vous pouvez simplement créer 2 méthodes getName()
et getname()
puis lorsque vous utilisez ${s_attribute.name}
La vélocité utilisera getname()
et lorsque vous utilisez ${s_attribute.Name}
velocity utilisera la méthode getName()
.
À partir du Guide de vitesse :
Règles de recherche de propriété
Comme mentionné précédemment, les propriétés font souvent référence aux méthodes de l'objet parent. Velocity est assez intelligent pour déterminer quelle méthode correspond à une propriété demandée. Il essaie différentes alternatives basées sur plusieurs conventions de nommage établies. La séquence de recherche exacte dépend du fait que le nom de la propriété commence ou non par une lettre majuscule. Pour les noms en minuscules, tels que $ customer.address, la séquence est
getaddress() getAddress() get("address") isAddress()
Pour les noms de propriété en majuscule comme $ customer.Address, il est légèrement différent:
getAddress() getaddress() get("Address") isAddress()
Ce que je suggère, c'est que vous le manipuliez dans votre objet sur le backend.