我想知道你是否可以帮助我调试我们遇到的一个问题。我们在JSF页面上收到以下错误:
PropertyNotWritableException: /resources/al/template.xhtml @96,112 value="#{cc.attrs.value.editedProperty.value}": The class 'org.company.tpl.template.TemplateString' does not have a writable property 'value'.
这是由视图中的这一行引起的:
<p:column><p:inputText id="property-value" value="#{cc.attrs.value.editedProperty.value}"/></p:column>
如您所见,该属性可在类中编写:
@Entity
@DiscriminatorValue("String")
public class TemplateString extends TemplateProperty {
@Column(name = "STRING_VALUE")
private String value;
// ...
public void setValue(String value) {
this.value = value;
}
@Override
public String getValue() {
return value;
}
// ...
}
最奇怪的是,这个错误只发生在生产中,而不是在实验室中。生产和实验室都在运行Glassfish 3.1.2.2。在实验室里,一切都很完美。
可能导致此问题的原因是什么?
答案 0 :(得分:2)
问题在于继承。
可能你的TemplateProperty类实现如下:
public class TemplateProperty {
public Object getValue() {
return some_value;
}
...
}
所以el尝试阅读Object getValue()
并尝试编写不存在的void setValue(Object obj)
。
我认为这是一个错误,我还不知道一个解决方法......