NoSuchMethodError:model.AddEvents.getStartDate()Ljava / lang / String;

时间:2017-07-26 09:23:57

标签: java jsp javabeans nosuchmethoderror

我不知道这里发生了什么。我使用Date数据类型将我的数据保存在我的数据库中并且它一直给出这个错误 - 错误访问数据库:javax.servlet.ServletException:java.lang.NoSuchMethodError:model.AddEvents.getStartDate()Ljava / lang / String; .I我确定我的servlet部分有错误。我认为问题在于我的servlet和java bean中Date类型的使用,因为最初我使用了字符串并且它工作得很好。请帮助人们:)

   package model;

import java.util.Date;
public class AddEvents{
 private String title;
 private String eventDesc;
 private String StartTime;
 private String  EndTime;
 private double Budget;
 private java.util.Date StartDate;
 private java.util.Date EndDate;

 public String getTitle() {
    return title;
}
public void setTitle(String title) {
    this.title = title;
}
public String getEventDesc() {
    return eventDesc;
}
public void setEventDesc(String eventDesc) {
    this.eventDesc = eventDesc;
}

public String getStartTime() {
    return StartTime;
}
public void setStartTime(String startTime) {
    StartTime = startTime;
}
public String getEndTime() {
    return EndTime;
}
public void setEndTime(String endTime){
    EndTime=endTime;
}

public double getBudget() {
    return Budget;
}
public void setBudget(double budget) {
    Budget = budget;
}
public java.util.Date getStartDate() {
    return StartDate;
}
public void setStartDate(java.util.Date startDate) {
    StartDate = startDate;
}
public java.util.Date getEndDate() {
    return EndDate;
}
public void setEndDate(java.util.Date endDate) {
    EndDate = endDate;
}

}


AddEventsServlet:
package servlet;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.ListIterator;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import database.DBAO;
import database.Delete;
import model.AddEvents;


/**
 * Servlet implementation class AddEventsServlet
 */
@WebServlet("/AddEventsServlet")
public class AddEventsServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public AddEventsServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        //response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        //doGet(request, response);


        AddEvents myEvent = new AddEvents();
        //create an object based on the Java class customers


        //Assignment of data
        myEvent.setTitle(request.getParameter("Title"));
        myEvent.setEventDesc(request.getParameter("EventDesc"));
        myEvent.setStartTime(request.getParameter("StartTime"));
        myEvent.setEndTime(request.getParameter("EndTime"));
        myEvent.setBudget(Double.valueOf(request.getParameter("Budget")));
        myEvent.setStartDate(java.sql.Date.valueOf(request.getParameter("StartDate")));
        myEvent.setEndDate(java.sql.Date.valueOf(request.getParameter("EndDate")));

        String title = request.getParameter("Title");
        String eventDesc= request.getParameter("EventDesc");
        String StartTime=request.getParameter("StartTime");
        String EndTime =request.getParameter("EndTime");
        double Budget=Double.valueOf(request.getParameter("Budget") );
        //double Budget=request.getParameter("Budget");
        Date StartDate=java.sql.Date.valueOf(request.getParameter("StartDate"));
        Date EndDate=java.sql.Date.valueOf(request.getParameter("EndDate"));



        System.out.println(myEvent.getTitle());
        System.out.println(myEvent.getEventDesc());
        System.out.println(myEvent.getStartTime());
        System.out.println(myEvent.getEndTime());
        System.out.println(myEvent.getBudget());
        //System.out.println(myEvent.getStartDate());
        //System.out.println(myEvent.getEndDate());
        java.util.Date date = myEvent.getStartDate();
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          System.out.println(sdf.format(date));

          java.util.Date date1 = myEvent.getEndDate();
          SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          System.out.println(sdf1.format(date1));

        request.setAttribute("Title",title);
        request.setAttribute("Details",eventDesc);
        request.setAttribute("Start Time",StartTime);
        request.setAttribute("End Time",EndTime);
        request.setAttribute("Budget",Budget);
        request.setAttribute("Start Date",StartDate);
        request.setAttribute("End Date",EndDate);

        try
        {
            DBAO myDatabase = new DBAO();
            ArrayList <AddEvents> myEventList = myDatabase.getAddEvents(); //not needed
            //AddEvents myEventDetails =myDatabase.isEvent(myEvent,title, eventDesc, StartTime, EndTime, Budget); //not needed

            HttpSession myRequest = request.getSession(true); //not needed
            request.setAttribute("EventList",myEventList); //not needed
            System.out.println(myEventList.size()); //not needed

            // you comment out the method that insert data to database
            myDatabase.AddEvents(myEvent,title,eventDesc,StartTime,EndTime,Budget,StartDate,EndDate);
            // the dispatcher can go to RetrieveServlet and let it handle the retrieve
            //myDatabase.delete(myEvent,title,eventDesc,StartTime,EndTime,Budget,StartDate,EndDate);
            //name of delete database
            request.getRequestDispatcher("Retrieve.jsp").forward(request, response);

    }catch(Exception ex)
        {
            System.out.println("Error Accessing Database:" +ex);
        }

    }

}

Retrieve.jsp:添加这个cuz我刚刚意识到我的控制台在这个jsp页面显示错误 - Retrieve.jsp:java:183它说

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<%@page import="model.AddEvents,java.util.ArrayList,java.util.ListIterator" %>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>


<script language="javascript">
function deleteRecord(id){
    var f=document.form;
    f.method="AddEvents";
    f.action='delete.jsp?id='+id;
    f.submit();
}
</script>


</head>
<body>
<%!ArrayList<AddEvents> myEventList; //have to declear in a declaration tag for access in the page %>
<% myEventList = (ArrayList<AddEvents>) request.getAttribute("EventList");
if(myEventList.size() == 0)
{
    %>
    <h2>No events</h2>
    <%
}
else
{
    %>

<table>
<%
ListIterator<AddEvents> li = myEventList.listIterator();

while(li.hasNext())
{
    AddEvents myEvent = new AddEvents();
    myEvent= (AddEvents)li.next();
    %>

 <%AddEvents event =(AddEvents)session.getAttribute("Event_Info"); %>
<tr><td>Title:</td><td><%= myEvent.getTitle() %></td><td></td></tr>
<tr><td>Details:</td><td><%= myEvent.getEventDesc() %></td><td> </td></tr>
<tr><td>StartTime:</td><td><%=myEvent.getStartTime() %></td><td></td></tr>
<tr><td>EndTime:</td><td><%= myEvent.getEndTime() %></td><td></td></tr>
<tr><td>Budget:</td><td><%=myEvent.getBudget()%></td><td></td></tr>
<tr><td>StartDate:</td><td><%=myEvent.getStartDate() %></td><td></td></tr>
<tr><td>EndDate:</td><td><%=myEvent.getEndDate() %></td>
<tr><td> <a href="delete.jsp"><img border="0" alt="delete" src="deleteIcon.png" width="20" height="20"></a></td>
<td><a href="AddEvent.jsp"><img border="0" alt="update" src="updateIcon.png" width="100" height="100"></a></td>
</tr>

<%}


%>
</table>
<%
}
%>
<input id='eventID' type="hidden" name="hiddEvent" value="">
<a href="AddEvent.jsp">Add Event</a>
</body>
</html>

3 个答案:

答案 0 :(得分:0)

您应该解析日期而不是System.out.println(myEvent.getStartDate());

Date date = myEvent.getStartDate()
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
System.out.println(sdf.format(date));

答案 1 :(得分:0)

问题在于您的导入类型;

您导入了java.sql.Date,但是您愿意使用java.util.Date功能,这是我们在使用IDE提供建议时所犯的常见错误,而不是寻找其他可用的导入,我们选择最上层的错误。所以不要惊慌。

修改导入后,它应该可以正常工作。

并测试您是否可以按照@ user7294900

提供的解决方案进行测试
  

您应该解析日期而不是System.out.println(myEvent.getStartDate());

     

Date date = myEvent.getStartDate(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(sdf.format(date));

如果仍然无法正常工作,那么至少旧的错误现在必须消失。如果任何错误仍然存​​在,请发布,这将有助于我们和其他人了解更多信息。 :)

答案 2 :(得分:0)

我认为解析日期时遇到问题。 java.util.Datejava.sql.Date不同。数据库只接受java.sql.Date。 为此,您需要将java.util.Date转换为java.sql.Date。

Date startDate = new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("startDate"));

java.sql.Date sql_StartDate = new java.sql.Date(startDate.getTime() );

转换它并设置值最后将值插入数据库。