3

私たちが抱えている 1 つの問題のデバッグを手伝ってもらえないかと思っていました。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 に答える