如何在h:outputText中转换字符串?这是h的代码:outputText:
<h:outputText value="#{item.label} : " />
我尝试过使用它,
<s:convertStringUtils format="capitalize" trim="true"/>
但它给了我错误: “没有为name定义标记:convertStringUtils”
答案 0 :(得分:18)
有几种方法。
使用CSS text-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()
function。
<html ... xmlns:of="http://omnifaces.org/ui">
...
<h:outputText value="#{of:capitalize(bean.text)}" />
你正在尝试的<s:convertStringUtils>
不是来自Seam。它来自MyFaces Sandbox。
答案 1 :(得分:0)
在数据bean中创建一个getter方法
public String getCapitalizeName(){
return StringUtils.capitalize(getName());
}
和xhtml
<houtputText value="#{yourDataBean.capitalizeName}"/>
答案 2 :(得分:0)
正如@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 中找到。对此不太了解。
答案 3 :(得分:0)
以下适用于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() : '')} : " />