2015-08-30 86 views
1

我需要在jsp頁面中手動顯示數據庫中的數據。但它不會顯示。在jsp頁面顯示數據

我的實體:

@Entity 
@NamedQuery(name="Contact.getAll", query="SELECT c FROM Contact c") 
public class Contact implements Serializable { 
private static final long serialVersionUID = 1L; 

@Id 
private String login; 
private String name; 
private String surname; 

getters/setters/equals/hashcode 

Bean來管理JSP:

public class DisplayDataBean { 

private EntityManagerFactory emf = Persistence.createEntityManagerFactory("ContactsPU"); 
private EntityManager em = emf.createEntityManager(); 
private List<Contact> contacts = em.createNamedQuery("Contact.getAll", Contact.class).getResultList(); 

public List<Contact> getContacts() { 
    return contacts; 
} 
} 

和JSP頁面片段:

 <c:forEach var="contact" items="${DisplayDataBean.contacts}"> 
      <tr> 
       <td><c:out value="${contact.login}"/></td> 
       <td><c:out value="${contact.name}"/></td> 
       <td><c:out value="${contact.surname}"/></td> 
      </tr> 
     </c:forEach> 

你能告訴什麼可以在這裏是錯誤的?提前致謝。

而且當我工作與

<sql:query var="contacts" dataSource="jdbc/contactapplication"> 
    SELECT * FROM contact; 
</sql:query> 

一切都很好。

問題是我沒有聲明DisplayDataBean。 解決辦法是在JSP頁面中添加標籤:

<jsp:useBean id="displayBean" class="web.DisplayDataBean"/> 

回答

0

你是不是在聲明變量contacts,這樣它沒有顯示,當您使用JSTL標記,那麼你使用可變contacts

如果您使用Spring,請將此contacts變量添加到ModelMap,以便可以檢索。

ModelMap mm = new ModelMap(); 
mm.put("contacts", values); 

或者如果您使用的是Servlet,那麼只需將該變量添加到響應參數即可。 request.setAttribute("contacts", "value");

+0

那麼我不使用彈簧或servlets。這只是3個文件。屬性項目應該獲得聯繫人列表。 – ihavelostmypants

0

您可能必須爲您的實體提供物理表名稱。我認爲區分大小寫可能會導致問題(「聯繫人」和「聯繫人」不一定相同)。

而且,我不是100%肯定,但@NamedQuery可能需要封閉到@NamedQueries - 這樣的實體定義可以這樣開始:

@Entity 
@Table(name="contact") 
@NamedQueries({ 
    @NamedQuery(name="Contact.getAll", query="SELECT c FROM Contact c") 
}) 
public class Contact implements Serializable { 
// the rest of the class definition goes here... 

如果啓用調試,您可能能夠查看查詢是否實際發佈,或者在查詢之前是否「失敗」。

順便說一句,當你說「它不會顯示」,這是不是意味着什麼是由c:forEach呈現?它是否渲染空表,空值或什麼都沒有?生成的輸出示例可能有所幫助。

我假設控制檯/日誌中沒有可見的異常?

+0

是的,它呈現空表。 – ihavelostmypants