为了方便起见,我将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,但仍然遇到相同的错误。所以我有两个问题;
这是我的对象类
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)
jsf是否需要setter来修改对象,即使它的修改器是公共的?
简短的回答:是的。
按照约定,Bean的每个字段都应为私有字段,并由各自的getter和setter进行访问/突变。
将字段更改为public不会做任何更改,因为当您在EL代码中键入字段名称时,服务器将搜索setFieldName(param)or getFieldName或or isFieldName如果您的字段是布尔值。
ssf修改对象值时,setter方法的返回类型是否必须为空?
是的,服务器将使包含的签名无效void。试试看。
| 归档时间: |
|
| 查看次数: |
1834 次 |
| 最近记录: |