gpt4 book ai didi

java - 如何使用重定向在 spring mvc 中的 jsp 上显示验证消息

转载 作者:行者123 更新时间:2023-11-30 07:12:02 26 4
gpt4 key购买 nike

我有这样的表格

<form:form method="POST" action="posts/add" modelAttribute="post">
<table>
<tr>
<td><form:label path="author"><spring:message code="blog.posts.author.name"/></form:label></td>
<td>
<form:select path="author">
<form:option value="NONE" label="--- Select ---"/>
<form:options items="${authors}" />
</form:select>
</td>
<td><form:errors path="author" cssClass="error" /></td>
</tr>
<tr>
<td><form:label path="text"><spring:message code="blog.posts.text"/></form:label></td>
<td><form:textarea path="text" rows="5" cols="30"/></td>
<td><form:errors path="text" cssClass="error" /></td>
</tr>
</table>
<input type="submit" value="<spring:message code="blog.posts.save"/>" />
</form:form>

及其 Controller

@Controller
public class PostsController {

@Autowired
private PostDAO postDao;

@Autowired
private Validator validator;

@RequestMapping("/posts")
public String showAllPosts(ModelMap model) {

List<String> authors = new ArrayList<String>();
authors.add("John B.");
authors.add("Jack C.");

List<Post> posts = postDao.findAll();
model.addAttribute("posts", posts);
model.addAttribute("authors", authors);

return "posts";
}

@ModelAttribute("post")
public Post getPost(ModelMap model) {
return new Post();
}

@RequestMapping(value = "/posts/add", method = RequestMethod.POST)
public String savePost(@ModelAttribute("post") Post post, BindingResult errors, ModelMap model) {

validator.validate(post, errors);

if (errors.hasErrors()) {
model.addAttribute("posts", postDao.findAll());
return "posts";
}

postDao.addPost(post);
model.addAttribute("posts", postDao.findAll());

return "redirect:/posts";
}

我使用自定义 validator 。

如果出现以下情况,它会显示带有错误消息的页面

if (errors.hasErrors()) {
model.addAttribute("posts", postDao.findAll());
return "posts";
}

我尝试在返回语句中使用 redirect:/posts

但在这种情况下,它不会在页面上显示错误消息。

还有?我试图添加到 Controller 。但没有成功。

@SessionAttributes("post")

是否有任何方法可以重定向到页面并在其上显示错误消息?

最佳答案

重定向导致 Servlet 容器使用 302 状态代码和 Location header 响应客户端,该 header 的值为要转到下一个的 URI。

模型和请求属性仅在一个请求的生命周期内存在。所以在Servlet容器发送了302之后,它们就没有了。您需要使用 flash 属性。如果您使用的是 Spring 3.1+,则可以使用 RedirectAttributes 来执行此操作.

关于java - 如何使用重定向在 spring mvc 中的 jsp 上显示验证消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20659210/

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