什么样的对象用来做一个带有选择字段的表单?

时间:2016-10-31 20:45:19

标签: java spring-mvc java-ee model-view-controller thymeleaf

在我的模型中,我有两个类SportSportSession

@Entity
@Table(name = "sport")
public class Sport implements Serializable {

    @Id
    @Column(name="sport_id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(name = "name", nullable = false, unique = true)
    private String name;
}


@Entity
@Table(name = "sport_session")
public class SportSession implements Serializable {

    @Id
    @Column(name="sport_session_id")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    // ...

    @ManyToOne
    @JoinColumn(name = "sport_id", nullable = false)
    private Sport sport;
    }
}

使用Thymeleaf,我想做一个允许创建SportSession的表单 我希望此表单包含一个<select>字段,其中包含所有体育项目的名称,以便将SportSportSession相关联。 我的问题是:应该从我的控制器向视图发送何种对象?
我应该创建一个包含所有运动列表的新对象SportSessionForm,还有一个Sport成员来存储用户选择的运动吗?
SportSession足以做到这一点吗?那DTO对象怎么样? 简而言之,这种情况下的最佳做法是什么?

谢谢。

1 个答案:

答案 0 :(得分:2)

最好为业务层(服务层)的表示层(SportSessionFormBean)和业务/完整Bean(SportSession)维护两个单独的Bean。

您需要将表示bean数据(SportSessionFormBean)转换为Controller类中的Business Bean,然后将其传递给Business Bean Object(SportSession)到Services层。服务层使用此Business Bean与DAO类进行交互,这些类持久存在或与数据库进行一些事务。

  

应该从我的控制器向视图发送何种对象?   我应该创建一个包含列表的新对象SportSessionForm   所有运动项目,以及体育成员选择存储运动   用户?

是的,SportSessionFormBean与HTML前端交互。

  

SportSession足以做到这一点吗?那DTO对象怎么样?   简而言之,这种情况下的最佳做法是什么?

如上所述,不要将表示层数据与业务层(服务层)数据混淆。服务是可重用的组件,它们与多个端点(如控制器或不同的Web服务等)进行交互。