代码之家  ›  专栏  ›  技术社区  ›  jker

spring中将数据从控制器传递到视图的正确方法

  •  0
  • jker  · 技术社区  · 8 年前

    我有两个实体

    public class FooEntity1 {
       private Integer id;
       private Collection<FooEntity2> entities;
       //gettrs, setters
    }
    
    public class FooEntity2 {
       private Integer id;
       private String msg;
       private String name;
       //gettrs, setters
    }
    

    在控制器中,我有一个FooEntity1类的对象“foo”,它在集合“entities”中有几个对象。

    在JSP文件中,我想这样做

    <c:forEach items="${foo.entities}" var="entity">
      ${entity.id} - ${entity.msg} - ${entity.name}
    </c:forEach>
    

    我知道将实体对象传递给jsp文件是个坏主意,所以我的问题是:使用视图中实体的数据的正确方法是什么?我有两个想法:

    1. 将实体中的数据放入地图,并将其传递给视图
    2. 创建FooEntity1Dto和FooEntity2Dto类以将数据传递给视图

    我该怎么做?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Jacob    8 年前

    第二个想法更好,即为视图逻辑创建Dto。

    您是对的,将实体传递给JSP是个坏主意。

    它违反了单一责任。实体是持久化的对象;然而,每个视图都需要不同的Dto。如果重用实体,可能会在开始时节省时间,但您会发现实体将来会与大量临时getter混合,这使得类很难维护。