本人是职场新手,想用记录博客的方式给自己的学习之路做点笔记,若有不对还望指正!
• 确定开发目标:
• Dao 层:新建一个方法:根据 lastName 查询对应的 Employee,若存在返回 Employee 对象,若不存在则返回 null
• Service 层:直接调用 Dao 方法返回结果即可。
• Controller 层:
– 获取请求参数
– 调用 Service 层验证 lastName 对应的 Employee 是否存在
– 若存在则返回 “1”,若不存在则返回 “0”。 需要使用 @ResponseBody注解 (用于直接返回标记)
JSP 页面:使用 jQuery 完成Ajax 的发送,和结果的响应。
@Transactional(readOnly=true)
public Employee getByLastName(String lastName){
return employeeRepository.getByLastName(lastName);
}
@ResponseBody
@RequestMapping(value="/ajaxValidateLastName",method=RequestMethod.POST)
public String validateLastName(@RequestParam(value="lastName",required=true) String lastName){
Employee employee = employeeService.getByLastName(lastName);
if(employee == null){
return "0";
}else{
return "1";
}
}
<script type="text/javascript">
$(function(){
$("#lastName").change(function(){
var val = $(this).val();
val = $.trim(val);
$(this).val(val);
//若修改的 lastName 和之前的 lastName 一致, 则不发送 Ajax 请求, 直接 alert:lastName 可用!
var _oldLastName = $("#_oldLastName").val();
_oldLastName = $.trim(_oldLastName);
if(_oldLastName != null && _oldLastName != "" && _oldLastName == val){
alert("lastName 可用!");
return;
}
var url = "${pageContext.request.contextPath }/ajaxValidateLastName";
var args = {"lastName":val,"date":new Date()};
$.post(url, args, function(data){
if(data == "0"){
alert("lastName 可用!");
}else if(data == "1"){
alert("lastName 不可用!");
}else{
alert("网络或程序出错. ");
}
});
});
})
</script>