gpt4 book ai didi

java - 从 Spring MVC 返回警告和错误?

转载 作者:行者123 更新时间:2023-12-05 07:53:10 24 4
gpt4 key购买 nike

我正在寻找一种方法来返回非致命验证“警告”消息以显示在 JSP 表单上(除了通常的验证“错误”消息之外)。这些将是允许处理继续而不是阻止任务完成的消息。

我想为此使用现有的 Spring 4 MVC 管道:BindingResult对象、Spring Validator 接口(interface)和 Spring <form:errors />标签。但到目前为止,我还没有弄清楚返回第二个 BindingResult 对象和显示消息的细节。

这是我到目前为止所得到的:

myFormValidator.validate(myForm, bindingResult);
myFormValidator.validateWarnings(myForm, warnings);
model.addAttribute("warnings",warnings);
return new ModelAndView(FORM_VIEW, "myForm", myForm);

但我不知道如何绑定(bind)自由 float 的 BindingResult 对象 warnings<form:errors /> JSP 端的标记。有人可以帮忙吗?

最佳答案

使用现有的 <form:errors /> 似乎没有一种简单的方法可以做到这一点标签。我最后做的是创建一个基于 ErrorsTag.java 及其父类(super class)的自定义标签。

标签的外观如下:

<mytag:warnings bind="${warnings}" path="myFieldName" />

这将列出 myForm.myFieldName 的所有警告在一个漂亮的样式 block 中。

这是内容(样板可以从 http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/tags/form/AbstractHtmlElementTag.html 获得):

protected boolean shouldRender() throws JspException {
try {
if (this.getPath() != null &&
this.getPath() != "") {
// Field errors
return (this.bind.hasFieldErrors(this.getPath()));
} else {
// Global errors
return this.bind.hasGlobalErrors();
}
} catch (IllegalStateException ex) {
// Neither BindingResult nor target object available.
return false;
}
}

protected int writeTagContent(TagWriter tagWriter) throws JspException{
if (shouldRender()) {
return doWrite(tagWriter);
}
return BodyTag.SKIP_BODY;
}

protected int doWrite(TagWriter tagWriter) throws JspException {
try {
tagWriter.startTag(getElement());
writeDefaultAttributes(tagWriter);
String delimiter = ObjectUtils.getDisplayString(evaluate("delimiter", getDelimiter()));
List<String> errorMessages = null;
if (this.getPath() != null) {
errorMessages = getFieldErrorMessages(bind.getFieldErrors(this.getPath()));
} else {
errorMessages = getGlobalErrorMessages(bind.getGlobalErrors());
}
tagWriter.appendValue("<ul>");
for (int i = 0; i < errorMessages.size(); i++) {
String errorMessage = errorMessages.get(i);
tagWriter.appendValue("<li>");
tagWriter.appendValue(getDisplayString(errorMessage));
tagWriter.appendValue("</li>");
}
tagWriter.appendValue("</ul>");
tagWriter.forceBlock();
tagWriter.endTag();
} catch (NullPointerException ex) {
ex.printStackTrace();
}

return BodyTag.EVAL_BODY_INCLUDE;
}

关于java - 从 Spring MVC 返回警告和错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32952073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com