在servlet上解析String到Date(EJB3,Jboss)

时间:2014-05-24 18:50:53

标签: java servlets

首先,请原谅我可怜的英语。 我想在我的反馈表单上搜索SendDate,但它不起作用,它说它无法解析字符串到目前为止。 这是我的代码: 1.Session bean:

public Group3KSC.Feedback[] searchLikeSendDateFeedback(Date senddate) {
        try {
            Query query = em.createQuery("SELECT f FROM Feedback f WHERE f.sendDate LIKE :sendDate");
            query.setParameter("sendDate", "%" + senddate + "%");
            List list = query.getResultList();
            Feedback[] result = new Feedback[list.size()];
            list.toArray(result);
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

搜索表单:

 <form action="../AdminSearchSendDateServlet" method="post">
            <div> Search <input type="text" name="dbSearch" class="text-input datepicker"/>
                <p class="button">
                    <input type="submit" value="Search" name ="action"/>
                </p>
            </div>
        </form>

AdminSearchSendDateServlet(问题在这里,当我声明searchsenddate时)

HttpSession session = request.getSession();
        String action = request.getParameter("action");
        Context ctx = new InitialContext();
        AdminSessionBeanLocal local = (AdminSessionBeanLocal) ctx.lookup("AdminSessionBeanLocalJNDI");
        if (action.equals("Search")) {

            SimpleDateFormat fBirth = new SimpleDateFormat("MM/dd/yyyy");
            Date searchsenddate = fBirth.parse(request.getParameter("dbSearch").trim());
            Feedback[] u = local.searchLikeSendDateFeedback(searchsenddate);
            session.setAttribute("Username", u);
            response.sendRedirect("Admin/FeedbackList.jsp");
        }

例如:数据库中的这条记录是:2014-05-25 00:00:00.000,当我在搜索表单中搜索日期选择器时,它会输入05/25/2014,当我点击搜索按钮时,它显示那些错误

  

java.lang.ClassCastException:java.lang.String无法强制转换为java.util.Date

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

DB上的'sendDate'是Date列吗?您是否尝试将'senddate'参数作为日期对象而不是字符串传递?

我希望它有所帮助。