rom*_*rav 9 spring jsp spring-mvc
我正在使用表单数据在spring mvc中调用一个控制器.
在保存之前,我会检查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??????
}
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*tig 15
一种简单的方法是将您的错误消息添加为模型属性.
@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";
}
}
Run Code Online (Sandbox Code Playgroud)
然后你的jsp可以显示"error"属性(如果存在).
<c:if test="${not empty error}">
Error: ${error}
</c:if>
Run Code Online (Sandbox Code Playgroud)
这是一个粗略的,未经测试的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";
}
}
Run Code Online (Sandbox Code Playgroud)
截取客户端的表单提交并验证:
$(".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;
});
Run Code Online (Sandbox Code Playgroud)
小智 7
您还可以使用现有的错误消息支持.这样,您可以使用spring-mvc错误标记在全局上下文甚至在字段级别显示错误.例如,如果您假装将错误绑定到字段,则可以使用:
@RequestMapping(value = "/sendMessage")
public String sendMessage(@ModelAttribute("message") Message message, BindingResult bindingResult) {
boolean check = userLoginService.checkForRange(message.getUserLogin());
if (!check) {
bindingResult.rejectValue("userLogin", "error.idOutOfRange", "The id selected is out of Range, please select another id within range");
return "jspPage"; // path to the jsp filename, omit extension (considering default config)
}
}
Run Code Online (Sandbox Code Playgroud)
在页面级别,您可以执行以下操作:
<form:form method="POST" commandName="message">
...
<form:input path="userLogin" />
<form:errors path="userLogin" />
...
</form:form>
Run Code Online (Sandbox Code Playgroud)
如果您只想显示全局错误,请在bindingResult.rejectValue和form:errors标记处省略参数名称.
注意:您无需担心手动恢复参数.在正常情况下,spring-mvc会为您处理.
希望能帮助到你.
| 归档时间: |
|
| 查看次数: |
38972 次 |
| 最近记录: |