发送一个ajax请求。 jQuery 在这方面非常有帮助。启动示例:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function() {
$("#id").blur(function() {
$.getJSON("validateId", $(this).serialize(), function(data) {
$("#id_message").text(data.valid ? '' : 'invalid!');
});
});
});
</script>
<style>
.error { color: red; }
</style>
</head>
<body>
<form action="someservlet" method="post">
<label for="id">id</label>
<input id="id" name="id" />
<span id="id_message" class="error"></span>
<br/>
<input type="submit">
</form>
</body>
</html>
使用servlet 映射到/validateId 的URL 模式并在doGet() 方法中执行以下操作:
boolean valid = validateId(request.getParameter("id"));
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write("{valid:" + valid "}");
就是这样。 validateId() 方法示例当然应该执行 DB 工作并根据结果返回 true 或 false。
请注意,您仍然需要在服务器端在 URL someservlet 后面的 servlet 中执行相同的验证。 JavaScript 是可禁用/可欺骗/可破解的。当服务端验证失败时,只需将消息放在请求范围内的一个map中,让servlet重新显示JSP,让JSP使用EL显示消息。
<span id="id_message" class="error">${messages.id}</span>