I change setter method return type to an object for ease eg: obj.setValue(newVal).setName(newName).setId(newId);
but after this change tomcat gives
javax.el.PropertyNotFoundException:
/WEB-INF/flows/materialorder/newOrder.xhtml @99,182
value="#{materailOrdService.mofEntity.nmExplanation.value}":
Property 'value' not writable on type tr.com.hydron.softexpert.order.model.MainFormEntity$MofField
To get rid of this exception I changed modifier from private to public but still getting the same error. So I have two questions;
- Does jsf need setter for modifying the object even if it's modifier is public?
- Does setter method return type have to be void for jsf modifying an object value?
Here is my object class
public static class MofField implements Serializable{
private static final long serialVersionUID = 1L;
public Object value;
...
public Object getValue() {
return value;
}
public MofField setValue(Object value) {
this.value = value;
return this;
}
...
}
edit: here is my xhtml code:
<p:inputTextarea valueChangeListener="#{materailOrdService.onExplanationChange}" value="#{materailOrdService.mofEntity.nmExplanation.value}" rows="3" cols="38" >
<p:ajax event="valueChange" global="false" immediate="true" partialSubmit="true" process="@this" />
</p:inputTextarea>
private
topublic
without its getter method does not make it to be accessed by EL like#{bean.value}
because this EL, in this example, refers to the corresponding getter methodgetValue()
and not the fieldvalue
itself. If you are using input components, you will need both a getter and a setter for a field complying the Java bean specification where a setter method cannot have a return type or otherwise, it cannot be said to be a write-only method. – Tiny