7

你好,

我有一个输入字段,我想在其中修剪任何前导/尾随空格。我们正在使用 JSF 并将输入字段绑定到 jsp 中的支持 bean,使用:

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

我的问题是,除了验证之外,这可以在 jsp 中完成吗?我知道我们也可以使用处理程序中的 trim() java 函数来做到这一点,但只是想知道在 JSF 中是否有更优雅的方法来实现这一点。

谢谢。

4

5 回答 5

6

您可以使用转换器教程)。

于 2010-01-08T19:31:15.273 回答
5

正如 McDowell 和 BalusC 所建议的,您可以创建一个 Converter,并使用 String 类的 @FacesConvert 注释注册它。然后在 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;
    }

}
于 2014-07-29T12:41:59.787 回答
2

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

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

于 2010-09-21T09:26:13.620 回答
1

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

于 2010-03-16T15:30:43.197 回答
0

一个主意:

public String getTexto() {
    return texto != null ? texto.trim() : null;
}
于 2021-05-14T21:31:15.477 回答