spring hibernate javax.el.PropertyNotFoundException

spring hibernate javax.el.PropertyNotFoundException,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我的项目在将一个属性endDate和它的getter&setter添加到实体project后出现错误: javax.el.PropertyNotFoundException: Property 'endDate' not found on type com.mvc.project.bean.Project 我的项目bean如下所示: package com.mvc.project.bean; import javax.persistence.Column; import javax.pers

我的项目在将一个属性
endDate
和它的
getter&setter
添加到实体
project
后出现错误:

javax.el.PropertyNotFoundException: Property 'endDate' not found on type com.mvc.project.bean.Project
我的项目bean如下所示:

package com.mvc.project.bean;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;


@Entity
public class Project {

    @Id
    @Column
    private String aldonNumber;
    //@Id
    @Column
    private String ITPRNumber;  


    @ManyToOne
    @JoinColumn(name="subtrackID") 
    private Subtrack subtrack ; 

    @Column
    private String releaseType;
    @Column
    private String releaseDate;
    @Column
    private String projName;

    @Column
    private String projStatus;
    @Column
    private String projType;
    @Column
    private String startDate;
    /*@Column
    private String projName;*/
    @Column
    private String endDate; 
    @Column
    private String devVendor;
    @Column
    private String QAVendor;
    @Column
    private String ISManager;

    @Column
    private String caremarkPM;   
    @Column
    private String onsiteDevTechLead;
    @Column
    private String offshoreDevTechLead;
    @Column
    private String onsiteQALead;
    @Column
    private String offshoreQALead;
    @Column
    private String projOwner;
    @Column
    private String onsiteDevPM;
    @Column
    private String offshoreDevPM;
    @Column
    private String onsiteQAPM;
    @Column
    private String offshoreQAPM;
    @Column
    private String submittedDate;
    @Column
    private String approvedDate;
    @Column
    private String createdDate;
    @Column
    private String createdBy;
    @Column
    private String lastModifieddate;
    @Column
    private String lastModifiedby;



    /**
     * @param aldonNumber
     * @param ITPRNumber
     * @param releaseType
     * @param releaseDate
     * @param projDesc
     * @param trackID
     * @param subtrackID
     * @param approverID
     * @param projStatus
     * @param projType
     * @param startDate
     * @param projName
     * @param devVendor
     * @param qAVendor
     * @param iSManager
     * @param projOwner
     * @param submittedDate
     * @param approvedDate
     * @param createdDate
     * @param createdBy
     * @param lastModifieddate
     * @param lastModifiedby
     */
    public Project() {}
    public Project(String aldonNumber, String ITPRNumber, String releaseType,
            String releaseDate, String projName, Subtrack subtrack,
            String subtrackID,String projStatus, String projType,
            String startDate,String endDate,  String devVendor,
            String qAVendor,String ISManager,String caremarkPM,String onsiteDevTechLead, String offshoreDevTechLead,String onsiteQALead, String offshoreQALead,String onsiteDevPM, String offshoreDevPM,String onsiteQAPM, String offshoreQAPM, String projOwner,
            String submittedDate, String approvedDate, String createdDate,
            String createdBy, String lastModifieddate, String lastModifiedby) {
        super();
        this.aldonNumber = aldonNumber;
        this.ITPRNumber = ITPRNumber;
        this.releaseType = releaseType;
        this.releaseDate = releaseDate;
        this.projName = projName;
        this.subtrack = subtrack;
        this.projStatus = projStatus;
        this.ISManager = ISManager;
        this.projType = projType;
        this.startDate = startDate;
        this.endDate=endDate;
        /*this.projName = projName;*/
        this.devVendor = devVendor;
        this.QAVendor = qAVendor;

        this.caremarkPM = caremarkPM;
        this.onsiteDevTechLead = onsiteDevTechLead;
        this.offshoreDevTechLead = offshoreDevTechLead;
        this.onsiteQALead = onsiteQALead;
        this.offshoreQALead = offshoreQALead;
        this.projOwner = projOwner;
        this.onsiteDevPM = onsiteDevPM;
        this.offshoreDevPM = offshoreDevPM;
        this.onsiteDevPM = onsiteDevPM;
        this.onsiteQAPM = onsiteQAPM;
        this.offshoreQAPM = offshoreQAPM;
        this.submittedDate = submittedDate;
        this.approvedDate = approvedDate;
        this.createdDate = createdDate;
        this.createdBy = createdBy;
        this.lastModifieddate = lastModifieddate;
        this.lastModifiedby = lastModifiedby;
    }


    public String getAldonNumber() {
        return aldonNumber;
    }
    public void setAldonNumber(String aldonNumber) {
        this.aldonNumber = aldonNumber;
    }
    public String getITPRNumber() {
        return ITPRNumber;
    }
    public void setITPRNumber(String ITPRNumber) {
        this.ITPRNumber = ITPRNumber;
    }
    public String getReleaseType() {
        return releaseType;
    }
    public void setReleaseType(String releaseType) {
        this.releaseType = releaseType;
    }
    public String getReleaseDate() {
        return releaseDate;
    }
    public void setReleaseDate(String releaseDate) {
        this.releaseDate = releaseDate;
    }
    public String getProjName() {
        return projName;
    }
    public String getOnsiteDevPM() {
        return onsiteDevPM;
    }
    public void setOnsiteDevPM(String onsiteDevPM) {
        this.onsiteDevPM = onsiteDevPM;
    }
    public String getOffshoreDevPM() {
        return offshoreDevPM;
    }
    public void setOffshoreDevPM(String offshoreDevPM) {
        this.offshoreDevPM = offshoreDevPM;
    }
    public String getOnsiteQAPM() {
        return onsiteQAPM;
    }
    public void setOnsiteQAPM(String onsiteQAPM) {
        this.onsiteQAPM = onsiteQAPM;
    }
    public String getOffshoreQAPM() {
        return offshoreQAPM;
    }
    public void setOffshoreQAPM(String offshoreQAPM) {
        this.offshoreQAPM = offshoreQAPM;
    }
    public void setProjName(String projName) {
        this.projName = projName;
    }

    public String getStartDate() {
        return startDate;
    }
    public void setStartDate(String startDate) {
        this.startDate = startDate;
    }
    public String getEndDate() {
        return endDate;
    }
    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }
    public Subtrack getSubtrack() {
        return subtrack;
    }
    public void setSubtrack(Subtrack subtrack) {
        this.subtrack = subtrack;
    }
    /*public String getProjName() {
        return projName;
    }
    public void setProjName(String projName) {
        this.projName = projName;
    }*/
    /*public String getTrackID() {
        return trackID;
    }
    public void setTrackID(String trackID) {
        this.trackID = trackID;
    }*/

    public String getProjStatus() {
        return projStatus;
    }
    public void setProjStatus(String projStatus) {
        this.projStatus = projStatus;
    }
    public String getProjType() {
        return projType;
    }
    public void setProjType(String projType) {
        this.projType = projType;
    }
    public String getDevVendor() {
        return devVendor;
    }
    public void setDevVendor(String devVendor) {
        this.devVendor = devVendor;
    }
    public String getQAVendor() {
        return QAVendor;
    }
    public void setQAVendor(String qAVendor) {
        QAVendor = qAVendor;
    }
    public String getISManager() {
        return ISManager;
    }
    public void setISManager(String iSManager) {
        ISManager = iSManager;
    }

    public String getCaremarkPM() {
        return caremarkPM;
    }
    public void setCaremarkPM(String caremarkPM) {
        this.caremarkPM = caremarkPM;
    }
    public String getOnsiteDevTechLead() {
        return onsiteDevTechLead;
    }
    public void setOnsiteDevTechLead(String onsiteDevTechLead) {
        this.onsiteDevTechLead = onsiteDevTechLead;
    }
    public String getOffshoreDevTechLead() {
        return offshoreDevTechLead;
    }
    public void setOffshoreDevTechLead(String offshoreDevTechLead) {
        this.offshoreDevTechLead = offshoreDevTechLead;
    }
    public String getOnsiteQALead() {
        return onsiteQALead;
    }
    public void setOnsiteQALead(String onsiteQALead) {
        this.onsiteQALead = onsiteQALead;
    }
    public String getOffshoreQALead() {
        return offshoreQALead;
    }
    public void setOffshoreQALead(String offshoreQALead) {
        this.offshoreQALead = offshoreQALead;
    }
    public String getProjOwner() {
        return projOwner;
    }
    public void setProjOwner(String projOwner) {
        this.projOwner = projOwner;
    }

    public String getSubmittedDate() {
        return submittedDate;
    }
    public void setSubmittedDate(String submittedDate) {
        this.submittedDate = submittedDate;
    }
    public String getApprovedDate() {
        return approvedDate;
    }
    public void setApprovedDate(String approvedDate) {
        this.approvedDate = approvedDate;
    }
    public String getCreatedDate() {
        return createdDate;
    }
    public void setCreatedDate(String createdDate) {
        this.createdDate = createdDate;
    }
    public String getCreatedBy() {
        return createdBy;
    }
    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }
    public String getLastModifieddate() {
        return lastModifieddate;
    }
    public void setLastModifieddate(String lastModifieddate) {
        this.lastModifieddate = lastModifieddate;
    }
    public String getLastModifiedby() {
        return lastModifiedby;
    }
    public void setLastModifiedby(String lastModifiedby) {
        this.lastModifiedby = lastModifiedby;
    }

}
在jsp中,endDate有以下标记。我还提供了开始日期标签,以供参考:

<td>Start Date</td>
                <td><form:input type="date" class="disable1" name="startdate" id="startdate" path="startDate" required="true" /></td>

                <td>End Date</td>
                <td><form:input type="date" class="disable1" name="enddate" id="enddate" path="endDate"/></td>
开始日期
结束日期
这是一个ajax调用,因此当我在预加载的jsp中按下一个链接时,将调用/tab2 url,这将在我的控制器上进一步调用以下内容:

@RequestMapping("/tab2")
    public String redirectjsp(Map<String,Object> map){
        Project project = new Project();
        map.put("project", project);
        map.put("projectList", projectService.getAllproject());

        return "tab2";

    }
@RequestMapping(“/tab2”)
公共字符串重定向JSP(映射){
项目=新项目();
地图放置(“项目”,项目);
put(“projectList”,projectService.getAllproject());
返回“tab2”;
}
在我补充之前,一切都很顺利

  • jsp中的endDate标记
  • 使用“项目”bean的getter和setter在“项目”bean中创建了一个属性,并包含在bean的构造函数中
  • 在“project”表中的我的数据库中添加了一个字段endDate
  • 真奇怪!!我从jsp、project类中删除了我的endDate,代码再次启动。然后我从Project类中删除了我的startDate,代码仍然运行良好,就好像它没有从Project类中获取startDate一样


    我删除了整个projectbean类,代码仍在运行,我不知道它引用的是哪个projectbean类,甚至不知道它是否引用

    属性enddate在jsp页面中定义为表达式语言时不正确

    如果要使用类之间的关系,则必须定义表示关联的属性

    没有关系:

    ${x.enddate}
    
    ${x.class.enddate}
    
    关于:

    ${x.enddate}
    
    ${x.class.enddate}
    

    为了确保jsp页面可以访问bean字段,可以使用IDE的generate Getter和Setter方法。我认为它比手动键入getter和setter要准确得多

    source>generate setters and getters select field to generate getters and setters.
    
    您可以通过
    ${project.endDate}
    用EL调用endDate对象,我可以在您的代码中看到您有一个项目列表?用foreach迭代它

    导入标记库

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    
    
    
    迭代列表

    <c:foreach items="projectlist" var="proj">
    
    <c:out value="${proj.endDate}"/>
    
    </c:foreach>
    

    谢谢大家的宝贵意见。我终于找到了解决方案并发布了帖子,以防其他人也遇到同样的问题

    实际上,我项目的元数据已损坏。我关闭了eclipse,进入工作区并删除了.metadata文件夹。然后我通过导入>常规>工作区中的现有项目再次导入该项目。现在一切都按预期进行


    此外,我使用瓷砖渲染我的输出。我正在更改“tab2.jsp”并期待更改,但实际上,当我查看tiles配置器时,它被配置为返回tab2\u update.jsp,而不是返回tab2\u update.jsp

    你能添加你的控制器和JSP吗?你确定你的
    Project
    表有一列
    endDate
    ?还有,你是从哪里得到这个错误的?请发布完整的上下文。您是否尝试清理、重建和重新部署代码?
    具有不同的属性:类的cssClass,名称和id的路径。因此,请尝试删除名称和id。这是尝试过的文档,但错误仍然存在。谢谢ker p pag,您能发布您的jsp代码吗?在这里您可以调用endDate.document.getElementById(“releasedate”).value=“”;document.getElementById(“startdate”).value=“”;document.getElementById(“enddate”).value=“”;document.getmentById(“projstatus”).value=“”;在你的帖子中,项目不是projI,你用“proj”变量引用了项目projectList'包含项目列表。