JSF去除空格

7

你好,

我有一个输入框,想要去掉任何前导/尾随的空格。我们正在使用JSF,并将输入框绑定到jsp中的后端bean,使用以下代码:

<h:inputText id="inputSN" value="#{regBean.inputSN}" maxlength="10"/>

我的问题是除了验证之外,这个是否可以在JSP中完成?我知道我们也可以使用Handler中的trim() Java函数来完成这个操作,但只是想知道是否有更优雅的方法在JSF中实现它。
谢谢。

我通过在处理程序中使用 trim() 函数来解决了这个问题,在此感谢 McDowell 提供的替代想法。 - msharma
5个回答

6

4
并将其注册到 converter-for-class 中,以便您不需要在每个 UIInput 组件上定义它。这样你就可以轻松地将其应用于 java.lang.String 类型的组件。 - BalusC
1
@Martlark - 这是在 faces-config.xml 中使用的一个元素。根据规范:_/faces-config/converter_ -- 为此 Web 应用程序创建或替换具有应用程序实例的转换器 id/转换器类或目标类/转换器类对。另外:_"converter-for-class" 元素表示将注册 Converter 类的完全限定类名。_ 更多信息请参见 JSF 规范。 - McDowell

5

根据McDowell和BalusC的建议,您可以创建一个转换器,并使用@FacesConvert注释将其注册到String类。然后在getAsObject方法中检查UIComponent类型,并仅对HtmlInputText组件应用修剪。

@FacesConverter(forClass = String.class)
public class StringTrimConverter implements Serializable, javax.faces.convert.Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent cmp, String value) {

        if (value != null && cmp instanceof HtmlInputText) {
            // trim the entered value in a HtmlInputText before doing validation/updating the model
            return value.trim();
        }

        return value;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent cmp, Object value) {

        if (value != null) {
            // return the value as is for presentation
            return value.toString();
        }
        return null;
    }

}

2
或者,如果您不想亲自编码,请参阅http://showcase.omnifaces.org/converters/TrimConverter。 - Jasper de Vries
我个人认为上述评论应该被接受为答案。 - Kawu

2

我在这里回答了类似的问题

基本上,您可以创建自己的组件,它是inputText的副本,可以自动修剪,或者您可以扩展inputText并添加 trim 属性,如果为true,则修剪。


1

我通过在处理程序中使用trim()函数来解决这个问题,在进行任何处理之前。这似乎是最直接的方法。


0
一个想法:
public String getTexto() {
    return texto != null ? texto.trim() : null;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接