studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java velocity

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)(); ...