2017-04-16 70 views
1

名試圖從一個數據庫名,以顯示在網頁上,但得到一個空白頁。讓我知道我做錯了,應用程序做的工作,所以沒有張貼堆棧跟蹤值得Thymeleaf循環與從MySQL

簡單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

隨着'<正文日:每個= 「客戶:$ {客戶}」>'你在一個HTML創建多個身體標記。這在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()方法。

如果你看到的仍然是一個空的列表,你可以斷點添加到您的查詢電話和運行調試器或只需登錄計數/元素,看看你的資料庫/數據庫返回。