質問: jspのテキストボックスに入力された日付を (●●●●/●●/●●)の形式で指定したいと思います。 jspで入力された値をservletで受け取り、 その値をSimpleDateFormatを用いて (yyyy/MM/dd)で判定したいです。 (yyyy/MM/dd)形式なら値をjspに返し、 そうでなければエラーメッセージを返そうと考えています。 どうすれば上記の方法で判定ができるでしょうか。 お手数ですが宜しくお願いします。
回答: SimpleDateFormatを使いたいのであれば、Servletの実装はこんな感じでしょうか。 ``` @Override protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); sdf.setLenient(false); String inputDate = req.getParameter("inputDate"); if(inputDate == null || inputDate.trim().length() == 0){ req.setAttribute("errorMessage", "date is required"); } else { try { sdf.parse(inputDate); req.setAttribute("inputDate", inputDate); } catch (ParseException e) { req.setAttribute("errorMessage", "date format is invalid"); } } // ...(以下略)... } ``` `setLenient(false)`を設定することで、形式だけでなく、うるう年などの日付の妥当性チェックもするようになります。