JSF trimming white spaces

2019-06-17 05:32发布

HI,

I have an input field in which I want to trim any leading/trailing whitespaces. We are using JSF and binding the input field to a backing bean in the jsp using:

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

My question is that besides validation can this be done in the jsp? I know we can also do this using the trim() java function in the Handler, but just wondering if there is a more elegant way to achieve this in JSF.

Thanks.

4条回答
姐就是有狂的资本
2楼-- · 2019-06-17 05:36

I answered a similar question here

Basically you can either create your own component that is a copy of inputText which automatically trims, or you can extend the inputText and add trim attribute that trims if true.

查看更多
女痞
3楼-- · 2019-06-17 05:44

You could use a Converter (tutorial).

查看更多
虎瘦雄心在
4楼-- · 2019-06-17 05:47

I resolved this by just using the trim() function in the handler before doing any processing. it just seemed like the most straight forward way of doing this.

查看更多
孤傲高冷的网名
5楼-- · 2019-06-17 06:01

As suggested by McDowell and BalusC, you can create a Converter, and register it with @FacesConvert annotation for the String class. And then in the getAsObject method check the UIComponent type and apply the trimming only for the HtmlInputText components.

@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;
    }

}
查看更多
登录 后发表回答