我用的下面的代码,但是如果用户输入符合yyyy-mm-dd,则返回true。如果随便输,比如:‘asdf’,就会报错。如果把它放到try catch里,也会报错,date_str_p.matches根本没进异常。
String date_str_p = request.getParameter("date_str");
boolean str_f = date_str_p.matches("^\\d{4}-\\d{2}-\\d{2}$");

解决方案 »

  1.   

    这两行是不会报错的,除非你的request.getParameter("date_str")==null
      

  2.   

    不会呀,我在前面已经加了判断了
    String date_str_p = request.getParameter("date_str");  
    if (date_str_p=="" || date_str_p==null)
      date_str_p = date_tmp_end;//当天日期
    boolean str_f = date_str_p.matches("^\\d{4}-\\d{2}-\\d{2}$");//就是这句报错
      

  3.   

    自己写日期很讨厌了,建议使用WdatePicker,js库。很方便的。
      

  4.   

    楼主,这样的习惯不好哦,
    if (date_str_p=="" || date_str_p==null)  尤其是:date_str_p==""报错的话,把错误贴出来,不然怎么知道什么错呢。
      

  5.   

    我现在用的form里的textfield,如果用js的控件,怎么从页面上得到它的值呢?现在用这种方法取值
    <%
    String date_str_p = request.getParameter("date_str");
    %><FORM METHOD=POST ACTION="works_query.jsp">
    工号:<INPUT TYPE=TEXT NAME="job_num" SIZE=20 VALUE="<%=job_num_p!=null?job_num_p:""%>">
    手机号:<INPUT TYPE=TEXT NAME="cell_num" SIZE=20 VALUE="<%=cell_num_p!=null?cell_num_p:""%>">
    开始时间:<INPUT TYPE=TEXT NAME="date_str" SIZE=20 VALUE="<%=date_str_p!=null?date_str_p:""%>">
    结束时间:<INPUT TYPE=TEXT NAME="date_end" SIZE=20 VALUE="<%=date_end_p!=null?date_end_p:""%>">
    <INPUT TYPE=SUBMIT value="开始查询">
    </FORM>
      

  6.   

    最好用一个时间控件,例如My97DatePicker,http://mysuc.com/test/My97DatePicker/如果是后台acton调到jsp,可以
    <input type="text" class="Wdate" id="date_str" name="date_str" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" value="${date_str}"/> , 用el表达式取值如果是jsp调到jsp,可以
    <input type="text" class="Wdate" id="date_str" name="date_str" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" value="${param.date_str}"/>,用${param.XXX}"取值