JSF修剪白色空间

msh*_*rma 7 jsf whitespace trim

HI,

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

<h:inputText id="inputSN" value="#{regBean.inputSN}" maxlength="10"/>
Run Code Online (Sandbox Code Playgroud)

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

谢谢.

McD*_*ell 6

你可以使用转换器(教程).

  • 并使用`converter-for-class`为`java.lang.String`注册它,这样就不需要在每个`UIInput`组件上定义它. (3认同)

小智 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;
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 或者,如果您不想自己编写代码,请参阅 http://showcase.omnifaces.org/converters/TrimConverter (2认同)