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

sti*_*vlo 13 css jsp jstl

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

我在CSS中看到了我可以这样做:

<a href="..." style="text-transform: capitalize">${linkName}</a>
Run Code Online (Sandbox Code Playgroud)

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

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

谁知道怎么做?或者任何替代方式?

提前致谢!

Bal*_*usC 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>
Run Code Online (Sandbox Code Playgroud)


小智 20

如果你不想使用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>
Run Code Online (Sandbox Code Playgroud)


Woo*_*tty 5

Apache Commons 提供了一些库来完成许多常见的有用任务。WordUtils 可以在这里为您提供帮助。

WordUtils.capitalizeFully("aaa BBB cCc");
Run Code Online (Sandbox Code Playgroud)

会输出...

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>
Run Code Online (Sandbox Code Playgroud)

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

<p>Hello ${blah:capitalize(firstName)}</p>
Run Code Online (Sandbox Code Playgroud)

不过,我会让您阅读自定义 TLD 文件,因为其他人对此有更好的解释。