gpt4 book ai didi

java - Spring-MVC:需要最简单的表单处理、绑定(bind)和验证示例

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:09:20 24 4
gpt4 key购买 nike

我有一个表格:

<form action="/processform">
<input name="firstname" value="john" />
<input name="lastname" value="doe" />
</form>

我有一个 Person 对象:

public class Person {
private String firstname;
private String lastname;
// ... getters & setters ...
}

我想接收此数据,对其执行验证,然后将其发布到数据存储区。

如何编写 Controller 来执行此操作?我知道我可以将参数作为请求参数传递,但我认为执行此操作的“正确”方法是以某种方式将数据从表单绑定(bind)到 Person 对象,然后在 Controller 中接收该 Person 对象并调用 Validate 对象被配置为接收 Person 对象。

经过大量阅读,这一步让我感到困惑。有人可以告诉我“绑定(bind)”数据、“验证”(例如 validator )和“处理”数据(例如 Controller ,特别是作为参数传递给它的内容)需要什么吗?

最佳答案

这是我一直在寻找的答案,我不明白 Spring 默认情况下会从表单提交中获取所有参数(例如“名字”和“姓氏”)并可以创建对象你通过调用这些参数的setter方法。

Controller :

@Controller
public class MyFormProcessor {
@RequestMapping("/formsubmit")
public String handleForm(@Valid Person person, BindingResult errors, Map<String,Object> model){
// ...handle form...
}
}

在为此请求调用 handleForm 之前,Spring 本质上是在执行以下魔术(显然以比我为这个简单示例描述的更可扩展的方式):

Person person = new Person();
person.setFirstname( request.getParameter("firstname") );
person.setLastname( request.getParameter("lastname") );
handleForm(person, anErrorsObject, new Model());

对于验证,您可以创建自己的 validator (我不会在这里提及任何内容),或者如果您在类路径中包含 Hibernate Validator,那么您可以注释 Person 类(示例下面)并且当您添加 @Valid 注释时,如我在上面的示例中描述的那样,Hibernate validator 将根据这些注释验证类并将任何错误发布到错误对象(BindingResult 对象是 Springs 的 Errors 的扩展,对于简单的示例,Errors 对象是有趣的组件)。

JSR-303 验证注释的 Person 类(与 @Valid 选项一起使用):

public class Person {
@NotNull
@Size(min=3, max=20)
private String firstname;

@NotNull
@Size(min=3, max=20)
private String lastname;

// ... getters & setters ...
}

关于java - Spring-MVC:需要最简单的表单处理、绑定(bind)和验证示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4112149/

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