Spring MVC如何将数据从数据库显示到表中

时间:2016-04-12 14:05:56

标签: java database spring-mvc

我对SPRING MVC很新,所以到目前为止我真的不太了解它。我想在表格视图中显示数据库中的所有字段我该怎么做?

在我的控制器中

@RequestMapping(value = "task", method = RequestMethod.GET)
  public String taskList(Map<String, Object> model) {
            model.put("task", taskRepository.findAll());
        return "/tasks/list";
      }

我的jsp:

<%@include file="/WEB-INF/views/includes/header.jsp"%>

<h4 class="form-header">${title}</h4>

<div class="forms col-md-12 bounceInDown mainContent" data-wow-delay="0.2s">



<table class="table table-striped">
  <thead>
    <tr>
      <th>Task ID</th>
      <th>Task Name</th>
      <th>Task Description</th>
    </tr>
  </thead>
  <tbody>
    <c:if test="${empty task}">
      <tr>
        <td colspan="8">No task to Display</td>
      </tr>
    </c:if>
    <c:if test="${not empty task}">

      <c:forEach items="${tasks}" var="task">
        <tr class="">
          <td>${task.taskid}</td>
          <td>${task.taskName}</td>
          <td>${task.taskDescription}</td>
          <td>
            <fmt:message key="task.list.status.text.${task.status}" />
          </td>

        </tr>
      </c:forEach>
    </c:if>
  </tbody>
</table>
</div>

<%@include file="/WEB-INF/views/includes/footer.jsp"%>

我的taskRepository atm里面没有任何东西

1 个答案:

答案 0 :(得分:3)

首先:

@RequestMapping(value = "task", method = RequestMethod.GET)
public String taskList(Map<String, Object> model) {
        model.put("task", taskRepository.findAll());
        return "/tasks/list";
  }

您应该返回一些您创建的对象而不是String值。假设您要将两个字段转移到您的页面,请将它们命名为 field1 field2 。现在创建您的数据传输对象:

public class MyEntityDto{
  private String filed1;
  private String field2;
  //Getter and setter method
  .
  .
  .
}

现在你的控制器应该是这样的:

@Autowired
SomeSevice someService;

@RequestMapping(value = "task", method = RequestMethod.GET)
@ResponseBody 
public List<MyEntityDto> taskList(Map<String, Object> model) {
    List<MyEntityDto> dtoList = someService.findALl();
    return dtoList;
  }

另一方面,您的服务应该是这样的:

@Service
public class SomeService(){
  @Autowired 
  TaskRepository taskRepository;

  public List<MyEntityDto> findAll(){
    return assemblyTasks(taskRepository.findAll());//TODO implement method assemblyTasks
  }
}

请注意,我将您的存储库用法放入服务中。这就是它应该完成的方式。您应该使用服务来从数据库中获取数据,而不是使用特定设计为此目的对象 - 数据传输对象返回数据。 我将assemblyTask方法的实现留给你。你需要做的是分配你想从实体传递到你的dto对象的视图。通常你会希望每个DTO对象都有一个汇编程序类,但为了简单起见,我通过使用方法介绍了这个想法。如果您想了解有关DTO的更多信息,请查看此帖子: getting-value-of-invalid-field-after-methodargumentnotvalidexception

如果您对Spring世界完全陌生,我建议您也找一些基础网络教程,例如: gonetoseries