2017-04-16 5 views
1

データベースから名前を取得しようとすると、Webページに表示されますが空白のページが表示されます。投稿の価値スタックトレースがないので、私は私が間違ってやっている知ってみましょう、アプリが仕事をして名前からのThymeleafループ

シンプルThymeleafビュー:

<!DOCTYPE html> 
<html xmlns:th="http://www.thymeleaf.org" xmlns:text="http://www.w3.org/1999/xhtml"> 
<head lang="en"></head> 
<body th:each="customer: ${customers}"> 
<h2 th:text="${customer}"></h2> 
</body> 
</html> 

コントローラー:

@Controller 
public class CustomerController { 

    @Autowired 
    private CustomerDAO customerDAO; 

    @RequestMapping("/list") 
    public String listCustomers(Model model){ 
    List<Customer> customers = customerDAO.findAll(); 
    model.addAttribute("customers", customers); 
    return "list-customers"; 
    } 
} 

DAO:

@Repository 
@Transactional 
public interface CustomerDAO extends CrudRepository<Customer, String> { 
    public List<Customer> findAll(); 

} 

のImpl:

@Transactional 
@Repository 
public abstract class CustomerDAOImpl implements CustomerDAO { 

    private SessionFactory sessionFactory; 

    private CustomerDAO customerDAO; 

    @Override 
    public List<Customer> findAll() { 
     return customerDAO.findAll(); 
     } 
} 

エンティティ:

@Entity 
@Table(name = "customer") 
public class Customer implements Serializable { 

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

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

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

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

    public Customer(){} 

    public Customer(String firstName, String lastName, String company){ 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.email = company; 
    } 

    @Override 
    public String toString() { 
     return "Customer{" + 
       "id=" + id + 
       ", firstName='" + firstName + '\'' + 
       ", lastName='" + lastName + '\'' + 
       ", email='" + email + '\'' + 
       '}'; 
    } 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

    public String getCompany() { 
     return email; 
    } 

    public void setCompany(String company) { 
     this.email = company; 
    } 
} 
+1

''は、1つのHTMLに複数のbodyタグを作成します。これはHTMLでは許可されていません。ボディータグをきれいにしておきましょう。余分なdivタグ。 – benkuly

答えて

0

は、あなたのHTMLは次のように更新する必要があります。

<!DOCTYPE html> 
<html xmlns:th="http://www.thymeleaf.org" xmlns:text="http://www.w3.org/1999/xhtml"> 
<head lang="en"></head> 
<body> 
    <div th:each="customer: ${customers}"> 
    <h2 th:text="${customer}"></h2> 
    </div> 
</body> 
</html> 

これはあなたのcustomerの各オブジェクトにtoString()メソッドを呼び出します。

まだ空リストが表示されている場合は、クエリ呼び出しにブレークポイントを追加してデバッガを実行するか、単にcount /要素を記録してリポジトリ/データベースが復帰しているかを確認できます。

関連する問題