gpt4 book ai didi

java - SpringMVC 和 @ModelAttribute 特性

转载 作者:行者123 更新时间:2023-11-30 11:51:42 27 4
gpt4 key购买 nike

使用 Spring/SpringMVC 3.0.5,我在我的 Controller 中定义了一个方法,如下所示:

@RequestMapping(params = { "save","!delete" }, method = RequestMethod.POST)
public ModelAndView saveFoo(...
@ModelAttribute("vo") @Valid DescriptionBuilderVO vo, BindingResult result) {
...
result.rejectValue("foo.sequenceNumber", "foo.builder", new Object[]{vo.getFoo().getSequenceNumber()}, "Sequence Number too high"); vo.getFoo().setSequenceNumber(originalNumber);
return new ModelAndView(WebConstants.VIEW_BUILDER, "vo", vo);

请注意,我正在尝试在 Controller 内的 VO 对象中设置一个值。有趣的是,如果我使用 @ModelAttribute 执行此操作,则新值不会显示。如果我从方法协定中删除 @ModelAttribute,新值将完全按照您的想象出现。当出现错误时问题就来了,获得错误的唯一方法是在契约(Contract)中使用@ModelAttribute。

顺便说一句,我的 HTML 看起来像:

HTML

<form:input path="foo.sequenceNumber" id="sequenceNumber" size="4" maxlength="4"/>
<form:errors path="foo.sequenceNumber" cssClass="ui-state-error" />

foo.sequenceNumber = the value the user typed in; when I use @ModelAttribute
foo.sequenceNumber = the value I set in the controller; but I lose any errors

在我看来,SpringMVC 将 ModelAttribute VO 放在一个“特殊”位置并将其传递回 jsp,但不是在一个明显的位置。有谁知道在这种情况下我如何获得 VO 对象?

最佳答案

奇怪。同样的事情对我有用。我看到的唯一区别是 Valid 和 ModelAttribute 的顺序您可以尝试颠倒 Valid 和 ModelAttribute 的顺序吗?

public ModelAndView saveFoo(...
@Valid @ModelAttribute("vo") DescriptionBuilderVO vo, BindingResult result) {
}

顺便说一句,你使用的是哪个版本的 spring?

关于java - SpringMVC 和 @ModelAttribute 特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7297418/

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