看板 java 關於我們 聯絡資訊
各位大大好,小弟又有問題來請教大家了 小弟目前在學jsp跟servlet,目前嘗試著要寫註冊系統 但是卻卡在一個關於date的問題,希望各位大大能為我解惑 小弟有把類別裡的程式貼到main裡跑,執行結果也如我所預期的一樣 但是套到類別,要寫入資料庫時,卻會發生錯誤訊息 而且我取的是轉為date之前的"字串",並非取date 卻給我這個錯誤,讓我頭痛了兩天 -.- 錯誤訊息為 java.lang.IllegalArgumentException: Cannot format given Object as a Date 以下為jsp片段程式 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <jsp:useBean id="member" class="com.kamikaze.Member" scope="session"/> <form action="regist"> <label> 任用日期: <input type="text" name="user_employee" id="" /> </label> 以下為Servlet片段程式 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String user_employee = request.getParameter("user_employee"); Member member = new Member(user_employee); if(member.check()){ <---eclipse指出這有錯 response.sendRedirect("regist.jsp"); }else{ HttpSession session = request.getSession(); session.setAttribute("member", member); response.sendRedirect("regist.jsp"); } } 以下為Member類別片段程式 public class Member { String user_employee; } public Member() { } public Member(String user_employee){ this.user_employee = user_employee; } public boolean check() { try { Date date = new Date(); DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Date sysdate = df.parse(df.format(date)); Date inpdate = df.parse(df.format(user_employee)); <--eclipse指 出這句有錯 if (!user_employee.matches("'#^((19|20)?[0-9]{2} [- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01]))*$#'")) { errors.add("日期格式需為西元 年、月、日"); passed = false; } if (inpdate.before(sysdate)) { System.out.println("日期不能在今天之前"); passed = false; } } catch (ParseException e) { e.printStackTrace(); } public String getuser_employee() { return user_employee; } public void setuser_employee(String user_employee) { this.user_employee = user_employee; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.176.108.111 ※ 編輯: vicioutangel 來自: 180.176.108.111 (09/11 16:39)
LaPass:user_employee 必需是 Date,而不是字串 09/11 18:08
vicioutangel:請教大大,為什麼我拉出這片段獨立執行時,使用字串 09/11 19:14
vicioutangel:套入該屬性卻可以執行? 09/11 19:18
Jichang:df.format(user_employee) 改成 user_employee 09/11 22:56
LaPass:沒實際跑過,不知道原因。我是看api上寫 .format()只收Date 09/12 09:29
vicioutangel:感謝您的解答,雖然我還沒試成功 -.- 09/12 11:41
KekeMonster:parse是拿來將String轉Date;而format是Date轉String.. 09/13 10:28