首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个@ModelAttribute

多个@ModelAttribute
EN

Stack Overflow用户
提问于 2018-02-26 03:22:43
回答 1查看 395关注 0票数 0

我在JSP文件中有Spring MCV表单:

代码语言:javascript
复制
<form:form action="confirm" modelAttribute="newStudent">
  <b>Personal info:</b><hr>
  <table>
    <tr>
        <td>First name:</td>
        <td>
            <form:input path="firstName" placeholder="Your first name?" />
            <form:errors path="firstName" cssClass="error"/>
        </td>
    </tr>

    <tr>
        <td>Last name:</td>
        <td>
            <form:input path="lastName" placeholder="Your second name?" />  
            <form:errors path="lastName" cssClass="error"/> 
       </td>
   </tr>
   <tr>
       <td>Country:</td>
       <td><form:select path="country">
           <form:options items="${newStudent.countryList}"/>
           </form:select></td>
   </tr>

  </table>
  <input type="submit" value="Submit"/>
</form:form>

和两个类:

代码语言:javascript
复制
public class NewStudent {


  //Countries List
  Map<String, String> countryList = new LinkedHashMap<>();

  public NewStudent() {
    countryList.put("US", "United States");
    countryList.put("UK", "United Kingdom");
    countryList.put("DE", "Germany");
  }

  public Map<String,String> getCountryList() {

    return countryList;
  }

/////

  @NotNull(message="Required!")
  @Size(min=3, message="At least 3 characters")
  @Pattern(regexp="[A-Za-z]+", message="Invalid name")
  private String firstName;

  @NotNull(message="Required!")
  @Size(min=3, message="At least 3 characters")
  @Pattern(regexp="[A-Za-z]+", message="Invalid last name")
  private String lastName;

  private String country;

  //setters, getters etc.
}

和:

代码语言:javascript
复制
@Entity
@Table(name="new_students")
public class NewStudentEntity {
  @Id
  private int id;

  @Column(name="first_name")
  private String firstName;

  @Column(name="last_name")
  private String lastName;

  @Column(name="country")
  private String country;

  ...
}

我想要做的是使用表单中的数据通过@ModelAttribute将其发送到NewStudent类,以验证给定的数据并获得国家列表,但我还希望将数据保存到数据库中,因此我希望将数据从表单发送到Entity类。这样做是可能的吗?有没有办法在Form和Controller类中使用多个@ModelAttribute注释,或者任何不同的方法来修复它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-03 06:00:55

也许有不同的选择来解决这个问题,但我用这种方式解决了它:

我将验证注释移动到实体类,如下所示:

代码语言:javascript
复制
@Entity
@Table(name="new_students")
public class NewStudent {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id")  
private int id;

@Column(name="first_name")
@NotNull(message="Required!")
@Size(min=3, message="At least 3 characters")
@Pattern(regexp="[A-Za-z]+", message="Invalid name")
private String firstName;

@Column(name="last_name")
@NotNull(message="Required!")
@Size(min=3, message="At least 3 characters")
@Pattern(regexp="[A-Za-z]+", message="Invalid last name")
private String lastName;

@NotNull(message="Select the country!")
@Column(name="country")
private String country;

然后将countryListNewStudent类移动到Controller类,并使用addAttribute将国家/地区列表从Controller发送到View

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48977463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档