javax.el.PropertyNotFoundException:该类没有属性

时间:2012-08-21 19:18:54

标签: jsf jsf-2 primefaces

我无法呈现数据库中肯定存在的数据。我的所有DAO方法都在工作和测试。也许它并不重要但无论如何:我使用的是Primefaces,Java ee 6,glassfish 3.1。

这是错误:/edit.xhtml @59,45 value="#{b.orderNum}": The class 'com.boatmanagement.domain.BoatOrder' does not have the property 'orderNum'.

我的域名。

@Entity
@Table(name="BOAT_ORDR_TB")
public class BoatOrder implements Serializable
{
    @Id
    @GeneratedValue
    @Column(name="ORDER_PK")
    private int orderId;

    @Column(name="ORDER_NUM")
    private String orderNum;

    @Temporal(TemporalType.DATE) 
    @Column(name="ORDER_DATE")
    private Date orderDate;

    public int getBoatOrderId() {
        return orderId;
    }
    public void setBoatOrderId(int orderId) {
        this.orderId = orderId;
    }
    public String getBoatOrderNum() {
        return orderNum;
    }
    public void setBoatOrderNum(String orderNum) {
        this.orderNum = orderNum;
    }
    public Date getBoatOrderDate() {
        return orderDate;
    }
    public void setBoatOrderDate(Date orderDate) {
        this.orderDate = orderDate;
    }
}

这是我的JSF页面的一部分。

        <h:form class="displayTable">
            <p:dataTable id="boatTable" autoUpdate="true"
                var="b" value="#{filterbean.btOrderlist}">

                <p:column headerText="res. num" width="50">
                    <h:outputText value="#{b.orderNum}" />
                </p:column>

                <p:column headerText="Date" width="50">
                    <h:outputText value="#{b.orderDate}" />
                </p:column>

                <p:column headerText="Yacht name" width="100">
                    <h:outputText value="" />
                </p:column>

            </p:dataTable>
        </h:form>
    </ui:define>

2 个答案:

答案 0 :(得分:14)

属性的存在基本上取决于是否存在根据Javabeans规范命名的公共getter方法。因此,orderNum的属性基本上需要名为getOrderNum()的公共getter(对于输入组件,还需要名为setOrderNum()的公共setter。)

你没有它们。你给了他们不同的名字。修复类中的方法名称,或EL中的属性名称。

答案 1 :(得分:0)

顺便说一句,知道这已经8岁了,在处理布尔/布尔值时我发现了一个问题。

假设我有一个“ active”对象成员,Eclipse将创建一个getter作为isActive(),而不是getActive()。 JBOSS / Tomcat似乎无法识别此吸气剂。我没有在Glassfish中尝试过此方法,但是我正在发布它,以防其他人发现此问题...