我正在使用表单数据调用 spring mvc 中的 Controller 。
在保存之前,我会检查 id 是否在某个范围内。如果id不在范围内,我需要在同一页面上显示一条消息说The id selected is out of Range, please select another id within range
.
我在互联网上找到了一些示例,如果出现任何问题,我可以重定向到失败的 jsp。但是在我的情况下怎么做呢?
@RequestMapping(value = "/sendMessage")
public String sendMessage(@ModelAttribute("message") Message message,
final HttpServletRequest request) {
boolean check = userLoginService.checkForRange(message.getUserLogin());
if(!check){
return ""; //What Should I do here??????
}
}
最佳答案
一种简单的方法是将您的错误消息添加为模型属性。
@RequestMapping(value = "/sendMessage")
public String sendMessage(@ModelAttribute("message") Message message,
final HttpServletRequest request, Model model) {
boolean check = userLoginService.checkForRange(message.getUserLogin());
if(!check){
model.addAttribute("error", "The id selected is out of Range, please select another id within range");
return "yourFormViewName";
}
}
然后您的 jsp 可以显示“错误”属性(如果存在)。
<c:if test="${not empty error}">
Error: ${error}
</c:if>
编辑
这是一个粗略的、未经测试的 ajax 验证实现。 JQuery 假设。
为 ajax 添加一个请求映射来命中:
@RequestMapping("/validate")
@ResponseBody
public String validateRange(@RequestParam("id") String id) {
boolean check = //[validate the id];
if(!check){
return "The id selected is out of Range, please select another id within range";
}
}
拦截客户端提交的表单并验证:
$(".myForm").submit(function(event) {
var success = true;
$.ajax({
url: "/validate",
type: "GET",
async: false, //block until we get a response
data: { id : $("#idInput").val() },
success: function(error) {
if (error) {
$("#errorContainer").html(error);
success = false;
}
}
});
return success;
});
关于spring - 如何在spring MVC的同一页面上显示错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22664533/