Java 如何在SpringMVC中重用多个表单的模型?

Java 如何在SpringMVC中重用多个表单的模型?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有低于标准的课程 public class User { private String name; private String age; private Address address; private Contact contact; // getters and setters } class Address { private String address1; private String address2; private String state; private String c

我有低于标准的课程

public class User {
private String name;
private String age;
private Address address;
private Contact contact;
// getters and setters
}
class Address {
private String address1;
private String address2;
private String state;
private String city;
// getters and setters
}
class Contact {
private String phone;
private String fax;
// getters and setters
}
我将此用户用作不同类型用户的多个表单的模型对象

联系人是可选的,或者对于某些用户类型不是必需的。 Address中的address2是可选的,或者对于某些用户类型不是必需的。 我的想法是让一个控制器处理多个用户类型的表单/页面

如何使用此模型处理上述场景? 如何为该模型编写验证程序?
您可以根据需要使用一种表单

一些注释可以直接添加到字段上,例如,如果对所有用户类型都是必需的,则address1的@NotNull

your use类应具有marker annotation@Valid以验证地址和联系人

public class User {
    ...
    @Valid
    private Address address;
    @Valid
    private Contact contact;
    ...
}
您还可以定义类级约束、注释约束和/或跨参数约束。看


因此,您的用户类应该使用自定义约束进行注释,您可以在其中检查用户类型,并为每个类型检查是否提供了必要的字段并正确填充。

感谢您提供了出色的解决方案。如果模型属性中没有对象,您有没有建议如何在JSP中隐藏表单元素?例如,如果地址对象未添加到用户对象,我希望JSP中的地址部分被隐藏?您可以使用“谢谢”。这真的很有帮助。