gpt4 book ai didi

java - @ModelAttribute在Spring框架中如何工作?

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

我正在学习Spring框架,我认为当我们在 Controller 中使用@ModelAttribute时,我们也需要在jsp中指定这个ModelAttribute。这是一个例子:

Controller :

@PostMapping("/processRegistrationForm")
public String processRegistrationForm(
@Valid @ModelAttribute("crmUser") CrmUser theCrmUser,
BindingResult theBindingResult,
Model theModel) {

...
}

jsp:

                <!-- Registration Form -->
<form:form action="${pageContext.request.contextPath}/register/processRegistrationForm"
modelAttribute="crmUser"
class="form-horizontal">

<!-- User name -->
<div style="margin-bottom: 25px" class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
<form:errors path="userName" cssClass="error" />
<form:input path="userName" placeholder="username (*)" class="form-control" />
</div>

...........

</form:form>

因此,我们在 jsp modelAttribute="crmUser" 中指定了 modelAttribute。

但是这里是使用@ModelAttribute的另一个例子,并且jsp中没有关于这个modelAttribute的规范。而且效果非常好。

Controller :

@PostMapping("/registerUser")
public String register(@ModelAttribute("user") User user) {
userRepository.save(user);
return "login/login";

}

jsp:

<form action="registerUser" method="post">
<pre>
First Name: <input type="text" name="firstName"/>
Last Name: <input type="text" name="lastName"/>
User Name: <input type="text" name="email"/>
Password: <input type="password" name="password"/>
Confirm Password: <input type="password" name="confirmPassword"/>
<input type="submit" value="register"/>
</pre>
</form>

所以在这种情况下我们不在jsp中指定modelAttribute。我不明白Spring如何知道谁是模型。 user 是 modelAttribute 的默认名称吗?只有当我们使用其他名称时,我们才在 jsp 中指定 modelAttribute 吗?任何反馈将不胜感激。谢谢!

最佳答案

您实际上可以在表单中指定它

@PostMapping("/registerUser")
public String register(@ModelAttribute("user") User user) {
userRepository.save(user);
return "login/login";

}

使用 spring 表单标签

<form:form method="POST" action="/registerUser"
modelAttribute="user">...

如果您不指定 Spring 可能会在您的背后执行此操作,如下所述:https://www.baeldung.com/spring-mvc-and-the-modelattribute-annotation

...并且您不需要指定它,因为与其余端点一样,在此资源映射中,您只能有一个主体,在本例中是您的表单对象。

关于java - @ModelAttribute在Spring框架中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57296216/

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