10

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

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

我试过用这个,

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

但它给了我错误:“没有为名称定义标签:convertStringUtils”

4

4 回答 4

21

有几种方法。

  1. 使用 CSStext-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. 使用OmniFacesof:capitalize()功能

    <html ... xmlns:of="http://omnifaces.org/ui">
    ...
    <h:outputText value="#{of:capitalize(bean.text)}" />
    

你正在尝试的<s:convertStringUtils>不是来自Seam。它来自 MyFaces Sandbox。

于 2012-11-17T02:02:23.650 回答
1

以下适用于 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() : '')} : " />
于 2012-12-10T01:31:47.663 回答
0

在数据 bean 中创建一个 getter 方法

public String getCapitalizeName(){
  return StringUtils.capitalize(getName());
}

在 xhtml 上

<houtputText value="#{yourDataBean.capitalizeName}"/>
于 2012-11-17T01:50:13.170 回答
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中可用。对此了解不多。

于 2012-11-17T04:17:32.627 回答