我最近一直在做一些令我难过的事情。
我正在使用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的其他公式,但它总是出现在同一个问题上。
非常感谢任何帮助。
答案 0 :(得分:0)
我认为您混淆了name
标记的id
和input
属性。 document.forms
使用name属性,而不是id。
document.forms["makeAppointmentForm"]["datepicker"].value
添加到输入标记, name="datepicker"
将始终为null。
对于Spring
,它使用name属性将输入值映射到请求参数。
添加name属性可以解决您的问题:
<input type="text" id="datepicker" name="datepicker" class="text"/>