JQuery Datepicker函数始终返回日期的空值

时间:2014-03-09 21:01:03

标签: jquery html forms spring datepicker

我最近一直在做一些令我难过的事情。

我正在使用Spring 3.0及其内置验证以及Hibernate 3.6

我正在尝试使用JQuery datepicker输入用户的日期。但是,发送到我的控制器的日期总是为空,并且会对我的Spring Validation造成严重破坏。

我总是收到此错误

    javax.validation.ConstraintViolationException: Validation failed for classes       [dao.Appointments] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
    ConstraintViolationImpl{interpolatedMessage='may not be null', propertyPath=appointment_date, rootBeanClass=class dao.Appointments, messageTemplate='{javax.validation.constraints.NotNull.message}'}
]

我发现这个错误正在发生,因为发送到我的控制器的日期是“null”所以我回去从我的JSP查看我的日期值

<meta charset="utf-8">
        <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
        <script src="//code.jquery.com/jquery-1.9.1.js"></script>
        <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
        <link rel="stylesheet" href="/resources/demos/style.css">


        <script type="text/javascript">
            jQuery(document).ready(function() {
                jQuery('#datepicker').datepicker({
                dateFormat : 'yy-mm-dd'
                });
            });
        </script>

            <!-- <script>
                $(function() {
                $( "#datepicker" ).datepicker();
                });
            </script> -->


            <script>
            function validateForm()
            {
                var x=document.forms["makeAppointmentForm"]["datepicker"].value;
                if (x==null || x=="")
                {
                    alert("Date must be selected");
                    return false;
                }

                var y=document.forms["makeAppointmentForm"]["desDoctor"].value;
                if (y==null || y=="")
                {
                    alert("Your desired doctor must be filled in");
                    return false;
                }   
            }   
            </script>

上面的代码就是我在JSP中的内容,我尝试了几个版本的datepicker,但仍然得到了我日期的“null”值。我在我的字段中使用了Javascript验证。

<form name ="makeAppointmentForm" action="makeAppointment" method="post"     onsubmit="return validateForm()">
<font>When selecting the date, Please click in the date field and a drop down menu will appear so that you may click on the date. 
The system will do the rest!!!</font><br>

Please select your desired date of appointment: <input type="text" id="datepicker" class="text"/><br><br>

上面的代码是我使用datepicker让用户输入他们想要的日期。    我将println语句放在我的代码中,试着看看日期的出现位置为null,到目前为止,它从一开始就是“null”。我已经尝试过在stackoverflow上找到的JQuery datepicker的其他公式,但它总是出现在同一个问题上。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为您混淆了name标记的idinput属性。 document.forms使用name属性,而不是id。

如果您不将document.forms["makeAppointmentForm"]["datepicker"].value添加到输入标记,

name="datepicker"将始终为null。

对于Spring,它使用name属性将输入值映射到请求参数。

添加name属性可以解决您的问题:

<input type="text" id="datepicker" name="datepicker" class="text"/>