2011-05-05 28 views
12

Estoy codificando una aplicación JSP/JSTL. Me gustaría diseñar un enlace con la primera letra en mayúscula y el resto en minúscula. Por ejemplo, "my LINK" se convertiría en "Mi enlace".¿Cómo capitalizar la primera letra con JSTL/CSS?

he visto que en el CSS que puedo hacer:

<a href="..." style="text-transform: capitalize">${linkName}</a> 

que funciona sólo cuando $ {} LinkName es todo en minúsculas, pero no funciona como yo quiero cuando está en mayúsculas, por ejemplo, si contiene " MY LINK "se seguirá mostrando en mayúsculas.

Me preguntaba cuál es la mejor manera de resolver este problema, por ejemplo, podría ser usar JSTL para convertir $ {linkName} a minúsculas.

¿Alguien sabe cómo hacer eso? O cualquier forma alternativa?

¡Gracias de antemano!

+0

Gran solución css para transformar sólo la primera letra si puedo decidir sobre mi cuerda y ponerlo en minúsculas. – Timo

Respuesta

30

Puede usar JSTL funciones fn:toLowerCase() para minúsculas de una cadena.

lo tanto, esto debería hacer

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
... 
<a href="..." style="text-transform: capitalize">${fn:toLowerCase(linkName)}</a> 
+0

Interesante, lo intenté y funciona. ¿Dónde puedo obtener más información sobre estas funciones? Aquí http://download.oracle.com/javaee/5/tutorial/doc/bnalg.html? – stivlo

+0

También vea el TLD http://download.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/fn/tld-summary.html También está vinculado en nuestra página wiki JSTL (haga clic en el enlace JSTL en mi respuesta) – BalusC

+0

Esperaba una forma pura de CSS, pero lamentablemente, no creo que exista. +1. –

18

Si no desea utilizar CSS y sólo utilizar JSTL, esta solución tiene un poco extremo:

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 


<a href="..." > 
${fn:toUpperCase(fn:substring(linkName, 0, 1))}${fn:toLowerCase(fn:substring(linkName, 1,fn:length(linkName)))} 
</a> 
4

Apache Commons ofrece bibliotecas que hacer un montón de tareas útiles comunes. WordUtils puede ayudarlo aquí.

WordUtils.capitalizeFully("aaa BBB cCc"); 

salida sería ...

AAA BBB Ccc

referencia para WordUtils: http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/WordUtils.html#capitalizeFully%28java.lang.String%29

En mi aplicación web añadí un contenedor para esto en mi archivo TLD ...

<function> 
    <name>capitalize</name> 
    <function-class>org.apache.commons.lang3.text.WordUtils</function-class> 
    <function-signature>java.lang.String capitalizeFully(java.lang.String)</function-signature> 
</function> 

así que ahora puedo hacer esto ...

<p>Hello ${blah:capitalize(firstName)}</p> 

te dejaré leer sobre los archivos TLD encargo embargo, ya que otras personas lo explican mejor.

1

PFB el código de abajo que convertiría "yo soy Dios" a "Yo soy Dios"

<c:forEach var="word" items="${fn:split(fn:toLowerCase(stringToBeConverted),' ')}"> 
     <c:set var="formattedText" value="${formattedText} ${fn:toUpperCase(fn:substring(word,0,1))}${fn:toLowerCase(fn:substring(word,1,fn:length(word)))}" /> 
    </c:forEach> 
Cuestiones relacionadas