我不知道这里发生了什么。我使用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>
答案 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.Date
和java.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() );
转换它并设置值最后将值插入数据库。