我正在编写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)
Apache Commons 提供了一些库来完成许多常见的有用任务。WordUtils 可以在这里为您提供帮助。
WordUtils.capitalizeFully("aaa BBB cCc");
Run Code Online (Sandbox Code Playgroud)
会输出...
Aaa Bbb Ccc
在我的网络应用程序上,我在 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 文件,因为其他人对此有更好的解释。