gpt4 book ai didi

jsf - setter 方法返回类型是否必须为 void?

转载 作者:行者123 更新时间:2023-12-04 13:49:42 25 4
gpt4 key购买 nike

为了方便,我将 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

为了摆脱这个异常,我将修饰符从 private 更改为 公开但仍然出现相同的错误。所以我有两个问题;

  1. jsf是否需要setter来修改对象,即使它是修饰符是公开的吗?
  2. 对于 jsf,setter 方法返回类型是否必须为 void修改对象值?

这是我的对象类

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;
}
...
}

编辑:这是我的 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>

最佳答案

Does jsf need setter for modifying the object even if it's modifier is public?

简短回答:是的。

按照惯例,Bean 的每个字段都应该是私有(private)的,并由相应的 getter 和 setter 访问/更改。

将字段更改为 public 不会改变任何内容,因为当您在 EL 代码中键入字段名称时,服务器将搜索 setFieldName(param)getFieldNameisFieldName 如果您的字段是 bool 值。

Does setter method return type have to be void for jsf modifying an object value?

是的,服务器将搜索 void 包含 void 的签名。试试看。

关于jsf - setter 方法返回类型是否必须为 void?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29782194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com