java - para - manual de programacion android pdf
Función de cadena de velocidad (4)
Acabo de empezar a utilizar Java Velocity. Ahora quiero crear una plantilla de clase 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
}
El problema es s_attribute.name primer carácter es minúscula. Cuando creo la función getter y setter para los atributos. Necesito cambiar el primer carácter a mayúsculas.
¿Alguien sabía cómo hacerlo?
Hay método capitalize()
en DisplayTool
:
get${display.capitalize($s_attribute.name)}()
Puede crear 2 métodos, getName()
y getname()
luego, cuando use ${s_attribute.name}
, getname()
usará getname()
y cuando use ${s_attribute.Name}
usará el método getName()
.
De la guía Velocity :
Reglas de búsqueda de propiedad
Como se mencionó anteriormente, las propiedades a menudo se refieren a métodos del objeto principal. La velocidad es bastante inteligente cuando se determina qué método corresponde a una propiedad solicitada. Prueba diferentes alternativas basadas en varias convenciones de nomenclatura establecidas. La secuencia de búsqueda exacta depende de si el nombre de la propiedad comienza con una letra mayúscula o no. Para los nombres en minúsculas, como $ customer.address, la secuencia es
getaddress() getAddress() get("address") isAddress()
Para nombres de propiedades en mayúsculas como $ customer.Address, es ligeramente diferente:
getAddress() getaddress() get("Address") isAddress()
Lo que sugiero es que lo manejes en tu objeto en el backend.
Puede invocar métodos java estándar en estos objetos. Si s_attribute.name
es tipo String, puede usar directamente $s_attribute.name.toUpperCase()
o para su caso específico use $s_attribute.name.substring(0,1).toUpperCase()
y $s_attribute.name.substring(1).toLowerCase()
Si está usando commons-lang
, puede usar la clase StringUtils
:
context.put("StringUtils", org.apache.commons.lang3.StringUtils.class);
Luego en tu plantilla:
...
return get$StringUtils.capitalize(s_attribute.name)();
...