Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSF trimming white spaces

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.

like image 288
msharma Avatar asked Jan 08 '10 19:01

msharma


2 Answers

You could use a Converter (tutorial).

like image 82
McDowell Avatar answered Oct 02 '22 07:10

McDowell


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

}
like image 28
koshua Avatar answered Oct 02 '22 08:10

koshua