setter方法的返回类型是否必须为空?

Ism*_*hin 3 jsf

为了方便起见,我将setter方法的返回类型更改为一个对象,例如: obj.setValue(newVal).setName(newName).setId(newId);

但是在tomcat改变之后

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
Run Code Online (Sandbox Code Playgroud)

为了摆脱此异常,我将修饰符从private更改为public,但仍然遇到相同的错误。所以我有两个问题;

  1. jsf是否需要使用setter来修改对象,即使其修改器是公共的也是如此?
  2. ssf修改对象值时,setter方法的返回类型是否必须为空?

这是我的对象类

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;
    }       
    ...     
}
Run Code Online (Sandbox Code Playgroud)

编辑: 这是我的xhtml代码:

<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>
Run Code Online (Sandbox Code Playgroud)

Jea*_*ard 5

jsf是否需要setter来修改对象,即使它的修改器是公共的?

简短的回答:是的。

按照约定,Bean的每个字段都应为私有字段,并由各自的getter和setter进行访问/突变。

将字段更改为public不会做任何更改,因为当您在EL代码中键入字段名称时,服务器将搜索setFieldName(param)or getFieldName或or isFieldName如果您的字段是布尔值。

ssf修改对象值时,setter方法的返回类型是否必须为空?

是的,服务器将使包含的签名无效void。试试看。