Reputation: 2710
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;
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>
Upvotes: 3
Views: 4744
Reputation: 21004
Does jsf need setter for modifying the object even if it's modifier is public?
Short answer : Yes.
By convention, each field of a Bean should be private and be accessed/mutated by there respective getters and setters.
Changing the field to public won't change anything, as when you type in the field name in your EL code, the server will search for the setFieldName(param)
or getFieldName
or isFieldName
if your field is a boolean.
Does setter method return type have to be void for jsf modifying an object value?
Yes, the server will search void a signature containing void
. Try it and see.
Upvotes: 5