2016-04-12 22 views
3

私は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:あなたがshoul

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

を:

<%@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気圧

+0

スタートを作成することにより、 jspで使用されているのと似たフィールドを持つオブジェクトを作成し、mockオブジェクトでメソッドをスタブしてください。レコードが表示されます。次に、DBからデータを取得し、このオブジェクトにマッピングできます。 –

+0

しかし、正確な問題は何ですか? – Enigo

答えて

3

の内側に何を持っていけませんd String値の代わりに作成したオブジェクトを返します。 2つのフィールドをページに転送する場合は、名前をフィールド1フィールド2とします。今すぐあなたのデータ転送オブジェクトを作成します。

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

今、あなたのコントローラがこのようなものになります。

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

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

お知らせ:一方から

@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; 
    } 

あなたのサービスは、次のようになります私はあなたのリポジトリの使用法をサービスに入れています。これは、それが行われるはずのやり方です。データベースからデータをフェッチするためにサービスを使用する必要があります。また、その目的のオブジェクト(データ転送オブジェクト)の特定の設計を使用してデータを返す必要があります。 私はあなたにassemblyTaskメソッドの実装を任せています。あなたがする必要があるのは、渡すフィールドをエンティティからdtoオブジェクトを通して見ることです。一般には、すべてのDTOオブジェクトに対してアセンブラクラスが必要ですが、簡単にするためにメソッドを使用してそのアイデアを導入しました。あなたは、私はいくつかの基本のWebチュートリアルを見つけることもお勧め春の世界に完全に新しいしている場合は、ここで例えば、 getting-value-of-invalid-field-after-methodargumentnotvalidexception

:あなたはDTOについての詳細を読みたい場合は、この記事を閲覧 gonetoseries

関連する問題