将h:outputText中的String转换为capitalize String?

时间:2012-11-17 01:48:24

标签: java jsf seam

如何在h:outputText中转换字符串?这是h的代码:outputText:

<h:outputText value="#{item.label} : " />

我尝试过使用它,

<s:convertStringUtils format="capitalize" trim="true"/>

但它给了我错误: “没有为name定义标记:convertStringUtils”

4 个答案:

答案 0 :(得分:18)

有几种方法。

  1. 使用CSS text-transform: capitalize属性。

    <h:outputText value="#{bean.text}" styleClass="capitalized" />
    

    .capitalized {
        text-transform: capitalize;
    }
    
  2. 创建自定义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();
    }
    
  3. 使用OmniFaces'of:capitalize() function

    <html ... xmlns:of="http://omnifaces.org/ui">
    ...
    <h:outputText value="#{of:capitalize(bean.text)}" />
    
  4. 你正在尝试的<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() : '')} : " />