簡體   English   中英

在jsp頁面中顯示數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM