在jsp页面中显示数据

时间:2015-08-30 16:08:32

标签: java jsp jpa html-table

我需要在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"/>

2 个答案:

答案 0 :(得分:0)

您没有声明变量contacts以便它不显示,当您使用JSTL标记时,您使用变量contacts

我使用的是Spring,请将此contacts变量添加到ModelMap,以便可以检索。

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

或者,如果您使用的是Servlet,则只需将此变量添加到响应参数即可。 request.setAttribute("contacts", "value");

答案 1 :(得分:0)

您可能必须为实体提供物理表名称。我认为区分大小写可能会导致问题(&#34;联系&#34;和&#34;联系&#34;不一定被视为相同)。

另外,我不是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...

如果您启用了调试,您可能能够查看查询是否实际已发出,或者是否&#34;失败&#34;甚至在那之前。

顺便说一句,当你说&#34;它不会显示&#34;时,它是否意味着c:forEach没有呈现任何内容?它是渲染空表,空值还是什么都没有?生成的输出示例可能有所帮助。

我假设控制台/日志中没有可见的异常?