h:outputText で文字列を変換するにはどうすればよいですか? h:outputText のコードは次のとおりです。
<h:outputText value="#{item.label} : " />
これを使ってみたのですが、
<s:convertStringUtils format="capitalize" trim="true"/>
しかし、それは私にエラーを与えます:「名前のタグが定義されていません:convertStringUtils」
以下は、JSF 1.2 および Seam 2.x で動作します。Seam がなくても動作する可能性がありますが、Seam が Java EE 5 で EL を拡張する方法を正確に思い出すことはできません。
<h:outputText value="#{item.label.toUpperCase()} : " />
<!-- If your string could be null -->
<h:outputText value="#{(item.label != null ? item.label.toUpperCase() : '')} : " />
@BalusC が使用できると言ったようにtext-transform: capitalize;
。ただし、文の各単語の最初の文字は大文字に変換されます。要件がそれである場合、それが最良の答えです。理由は、
1.簡単だからです
2. text-transform: capitalize;
すべての主要なブラウザーでサポートされているからです。
ただし、文の最初の文字だけを大文字にしたい場合は、次のようにすることができます。
public String getLabel() {
if(label != null && !label.isEmpty()) {
return Character.toUpperCase(label.charAt(0)) + label.substring(1);
}
return label;
}
JBoss Seamには<s:convertStringUtils>
タグがないと思います。そのようなタグはApache MyFacesで利用できると思います。それについてはあまり知りません。
データ Bean に getter メソッドを作成する
public String getCapitalizeName(){
return StringUtils.capitalize(getName());
}
そしてxhtmlで
<houtputText value="#{yourDataBean.capitalizeName}"/>