user1220373
user1220373

Reputation: 385

How to detect a field value change in a JSF 2.0 page

I am using JSF 2.0 to develop a pretty big and complex page which contains numerous fields. Thre would be quit command button at the buttom of the page and when ever user selects the quit option I need to detect whether user has entered any value on one of the fields of the page.

I am using the null check of each field values in the backing bean to do that now, but that's a very tedious and repeative job. I was wondering is there any smart solution for that ?? Any help will be highly appreciated.

Thanks in advance.

Upvotes: 5

Views: 6119

Answers (2)

BalusC
BalusC

Reputation: 1108722

For that the valueChangeListener attribute is meant to be used.

<h:inputText ... valueChangeListener="#{bean.changed}" />

with

public void changed(ValueChangeEvent event) {
    this.changed = true;
}

Upvotes: 11

Bj&#246;rn Pollex
Bj&#246;rn Pollex

Reputation: 76788

Your field-values are probably linked to properties of the backing-bean. When the value is changed, the setter is invoked. Inside the setter you could set a boolean field of the bean to true, if the value actually changed.

public void setPropertyX(Type newValue) {
    if(!newValue.equals(this.X)) {
        this.X = newValue;
        this.fieldChanged = true;
    }
}

For this to work, you backing-bean should be at least in @ViewScope.

Upvotes: 1

Related Questions