JSP/JSTLアプリケーションをコーディングしています。最初の文字を大文字にし、残りを小文字にするリンクのスタイルを設定したいと思います。たとえば、「myLINK」は「MyLink」になります。
私はCSSで私ができることを見ました:
<a href="..." style="text-transform: capitalize">${linkName}</a>
これは、$ {linkName}がすべて小文字の場合にのみ機能しますが、たとえば「MY LINK」が含まれている場合、大文字の場合はすべて大文字で表示されます。
この問題を解決する最善の方法は何でしょうか。たとえば、JSTLを使用して$ {linkName}を小文字に変換することもできます。
誰もがそれを行う方法を知っていますか?または他の方法はありますか?
前もって感謝します!
[〜#〜] jstl [〜#〜] 関数 fn:toLowerCase()
を使用して文字列を小文字にすることができます。
だから、これはする必要があります
<%@ taglib prefix="fn" uri="http://Java.Sun.com/jsp/jstl/functions" %>
...
<a href="..." style="text-transform: capitalize">${fn:toLowerCase(linkName)}</a>
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>
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
私の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ファイルについては読んでおくことにします。
「iAMgod」を「IAmGod」に変換する以下のコードを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>