Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trim String in JSF h:outputText value

Tags:

trim

jsf

Is there any way to string JSF h:outPutTextValue ? my string is A-B-A03 ,i just want to display last 3 characters .does openfaces have any avialable function to do this ?

Thanks

like image 652
Bernad Ali Avatar asked Aug 07 '26 21:08

Bernad Ali


1 Answers

You could use a Converter for this job. JSF has several builtin converters, but no one suits this very specific functional requirement, so you'd need to create a custom one.

It's relatively easy, just implement the Converter interface according its contract:

public class MyConverter implements Converter {

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object modelValue) throws ConverterException {
        // Write code here which converts the model value to display value.
    }

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) throws ConverterException {
        // Write code here which converts the submitted value to model value.
        // This method won't be used in h:outputText, but in UIInput components only.
    }

}

Provided that you're using JSF 2.0 (your question history confirms this), you can use the @FacesConverter annotation to register the converter. You can use the (default) value attribute to assign it a converter ID:

@FacesConverter("somethingConverter")

(where "something" should represent the specific name of the model value you're trying to convert, e.g. "zipcode" or whatever it is)

so that you can reference it as follows:

<h:outputText value="#{bean.something}" converter="somethingConverter" />

For your particular functional requirement the converter implementation can look like this (assuming that you actually want to split on - and return only the last part, which makes so much more sense than "display last 3 characters"):

@FacesConverter("somethingConverter")
public class SomethingConverter implements Converter {

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object modelValue) throws ConverterException {
        if (!(modelValue instanceof String)) {
            return modelValue; // Or throw ConverterException, your choice.
        }

        String[] parts = ((String) modelValue).split("\\-");
        return parts[parts.length - 1];
    }

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) throws ConverterException {
        throw new UnsupportedOperationException("Not implemented");
    }

}
like image 80
BalusC Avatar answered Aug 10 '26 12:08

BalusC



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!