3

我想知道您是否可以帮助我调试我们遇到的一个问题。我们在 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。在实验室中,一切正常。

什么可能导致此问题?

4

1 回答 1

3

问题在于继承。

可能您的 TemplateProperty 类的实现方式如下:

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

所以 el 尝试读取Object getValue()并尝试写入void setValue(Object obj)不存在的内容。

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

于 2013-04-16T12:36:46.543 回答