如何在 h:outputText 中转换字符串?这是 h:outputText 的代码:
<h:outputText value="#{item.label} : " />
我试过用这个,
<s:convertStringUtils format="capitalize" trim="true"/>
但它给了我错误:“没有为名称定义标签:convertStringUtils”
有几种方法。
使用 CSStext-transform: capitalize
属性。
<h:outputText value="#{bean.text}" styleClass="capitalized" />
和
.capitalized {
text-transform: capitalize;
}
创建自定义Converter
.
<h:outputText value="#{bean.text}" converter="capitalizeConverter" />
和
@Override
public String getAsString(FacesContext context, UIComponent component, Object modelValue) {
if (modelValue == null || ((String) modelValue).isEmpty()) {
return null;
}
String string = (String) modelValue;
return new StringBuilder()
.append(Character.toTitleCase(string.charAt(0)))
.append(string.substring(1))
.toString();
}
使用OmniFaces的of:capitalize()
功能。
<html ... xmlns:of="http://omnifaces.org/ui">
...
<h:outputText value="#{of:capitalize(bean.text)}" />
你正在尝试的<s:convertStringUtils>
不是来自Seam。它来自 MyFaces Sandbox。
以下适用于 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() : '')} : " />
在数据 bean 中创建一个 getter 方法
public String getCapitalizeName(){
return StringUtils.capitalize(getName());
}
在 xhtml 上
<houtputText value="#{yourDataBean.capitalizeName}"/>
正如@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中可用。对此了解不多。