2011-05-05 45 views
12

我正在编写一个JSP/JSTL应用程序。我想用第一个字母大写和其他小写来设计链接。例如,“我的LINK”将成为“我的链接”。如何将JSTL/CSS的首字母大写?

我看到,在CSS我可以这样做:

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

只有其中一期工程在$ {} LINKNAME是全部小写,但没有工作,我希望当大写,例如,如果它包含“我的链接“仍然全部大写显示。

我想知道什么是解决这个问题的最好方法,例如可以使用JSTL将$ {linkName}转换为小写。

任何人都知道该怎么做?或者有其他方法吗?

在此先感谢!

+0

出色的CSS解决方案,仅改造的第一个字母,如果我能决定我的字符串,并把它小写。 – Timo 2015-03-10 14:42:06

回答

30

您可以使用JSTL函数fn:toLowerCase()来小写字符串。

所以,这应该做

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

有趣的是,我已经尝试过,它的工作原理。我在哪里可以了解更多关于这个功能这里http://download.oracle.com/javaee/5/tutorial/doc/bnalg.html? – stivlo 2011-05-05 11:41:23

+0

另请参阅TLD http://download.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/fn/tld-summary.html它也链接到我们的JSTL wiki页面(单击我的答案中的JSTL链接)。 – BalusC 2011-05-05 11:41:56

+0

我希望有一个纯CSS的方式,但可悲的是,我不认为有一个。 +1。 – 2011-05-05 11:43:33

18

如果你不想使用CSS和只使用JSTL,这种解决方案有一个有点极端:

<%@ 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

阿帕奇百科全书提供图书馆做大量的常见的有用任务。 WordUtils可以帮助你。

WordUtils.capitalizeFully("aaa BBB cCc"); 

将输出...

Aaa级BBB CCC

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

在我的web应用程序,我添加了这样的包装在我的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> 

所以现在我能做到这一点...

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

我将离开你,虽然自定义TLD文件读了,因为其他人更好地解释它。

1

PFB下面的代码,这将转换“我是神”到“我是神”

<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>