[英]Display data in jsp page
我需要在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"/>
您沒有聲明變量contacts
以便不顯示它,而當您使用JSTL標記時,您使用的是變量contacts
。
如果您使用的是Spring,請將該contacts
變量添加到ModelMap
以便可以檢索它。
ModelMap mm = new ModelMap();
mm.put("contacts", values);
或者,如果您使用的是Servlet,則只需將此變量添加到響應參數即可。 request.setAttribute("contacts", "value");
您可能必須為實體提供一個物理表名稱。 我認為區分大小寫可能會在這里引起問題(“聯系人”和“聯系人”不一定相同)。
另外,我不確定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
沒有呈現任何內容? 它是否呈現空表,空值或什么都不顯示? 生成的輸出示例可能會有所幫助。
我假設控制台/日志中沒有可見的異常?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.