【发布时间】:2014-03-29 05:55:49
【问题描述】:
我们必须在 Java 中使用一个非常特殊的类,它具有以下属性:
protected SPSExchangedDocumentType spsExchangedDocument;
public SPSExchangedDocumentType getSPSExchangedDocument() {
return spsExchangedDocument;
}
我在 jsp 页面中使用该类的实例:
<c:out value = "${certificate.spsExchangedDocument.id.value}"/>
它抛出了以下异常:
javax.el.PropertyNotFoundException:类 'un.unece.uncefact.data.standard.spscertificate._5.SPSCertificateType' 没有属性“spsExchangedDocument”。在 javax.el.BeanELResolver.getBeanProperty(BeanELResolver.java:579) 在 javax.el.BeanELResolver.getValue(BeanELResolver.java:281) 在 javax.el.CompositeELResolver.getValue(CompositeELResolver.java:175) 在 com.sun.el.parser.AstValue.getValue(AstValue.java:138) 在 com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:206) 在 org.apache.jasper.runtime.PageContextImpl.evaluateExpression(PageContextImpl.java:1001)
我认为问题直接在于该属性称为spsExchangedDocument,但方法称为getSPSExchangedDocument。我无法更改类的代码,因为它是从 XSD 自动生成的,我们无法更改,所以我应该更改页面。但是我应该使用什么名称才能让 EL 正确解析它:
- spsExchangedDocument.
- SPSExchangedDocument。
- sPSExchangedDocument。
在 java 和 EL 中这种命名约定的规则是什么?
【问题讨论】:
-
一般情况下,getter 和 setter 的命名是属性名,首字母大写,以 get/set 开头。所以请尝试使用 getSpsExchangedDocument。通常这可以由您选择的 IDE 生成。
-
再一次 - 我无法更改 getter 的名称,因为它是由 Jaxb 工具自动生成的。