JSF中的PropertyNotWritableException,即使属性是可写的

时间:2012-09-13 14:41:20

标签: java jsf

我想知道你是否可以帮助我调试我们遇到的一个问题。我们在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。在实验室里,一切都很完美。

可能导致此问题的原因是什么?

1 个答案:

答案 0 :(得分:2)

问题在于继承。

可能你的TemplateProperty类实现如下:

public class TemplateProperty {
    public Object getValue() {
        return some_value;
    }
    ...
}

所以el尝试阅读Object getValue()并尝试编写不存在的void setValue(Object obj)

我认为这是一个错误,我还不知道一个解决方法......