我正在编写JSP / JSTL应用程序。我想设置第一个字母大写和其余小写的链接。例如,“我的链接”将成为“我的链接”。
我在CSS中看到了我能做到的事情:
<a href="..." style="text-transform: capitalize">${linkName}</a>
仅当$ {linkName}全部为小写时才有效,但如果包含“MY LINK”的大写字母为大写,则无效,但仍然全部大写显示。
我想知道解决此问题的最佳方法是什么,例如可以使用JSTL将$ {linkName}转换为小写。
任何人都知道该怎么做?或者任何其他方式?
提前致谢!
答案 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
在我的网络应用程序中,我在我的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>