如何用JSTL / CSS大写第一个字母?

时间:2011-05-05 11:29:18

标签: css jsp jstl

我正在编写JSP / JSTL应用程序。我想设置第一个字母大写和其余小写的链接。例如,“我的链接”将成为“我的链接”。

我在CSS中看到了我能做到的事情:

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

仅当$ {linkName}全部为小写时才有效,但如果包含“MY LINK”的大写字母为大写,则无效,但仍然全部大写显示。

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

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

提前致谢!

4 个答案:

答案 0 :(得分:36)

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

所以,这应该做

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

答案 1 :(得分:19)

如果你不想使用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>

答案 2 :(得分:4)

Apache Commons提供了库来完成许多常见的有用任务。 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

在我的网络应用程序中,我在我的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文件,因为其他人会更好地解释它。

答案 3 :(得分:2)

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>