【问题标题】:Trying to display data fetched from database on a jsp page (I am using Struts 2 with Hibernate)试图在 jsp 页面上显示从数据库中获取的数据(我正在使用带有 Hibernate 的 Struts 2)
【发布时间】:2011-07-30 07:45:07
【问题描述】:

我正在尝试使用带有 Struts 2 的 Hibernate 将数据从我的数据库显示到 Jsp 页面。虽然没有错误,但没有显示任何内容。

我试图从其他帖子中找到解决方案,但找不到。

这是动作类。

public class viewDayReportAction extends ActionSupport {

private static final long serialVersionUID = 9149826260758390091L;

//DayReportPersistence is the class which maps the table in hibernate
private List<DayReportPersistence> dayReportsList;
public List<DayReportPersistence> getDayReportsList() {
    return dayReportsList;
}
public void setDayReportsList(List<DayReportPersistence> dayReportsList) {
    this.dayReportsList = dayReportsList;
}

private DayReportPersistence dayReport;
public DayReportPersistence getDayReport() {
    return dayReport;
}
public void setDayReport(DayReportPersistence dayReport) {
    this.dayReport = dayReport;
}

private DayReportQuery dayReportQuery;
public viewDayReportAction() {
    dayReportQuery=new DayReportQuery();
}

@Override
public String execute(){ 
    this.dayReportsList=dayReportQuery.list();
    System.out.println(dayReportsList);
    //this statement prints the following in the tomcat output screen
    //[Hibernate.DayReportPersistence@1974acd, Hibernate.DayReportPersistence@1afe8ef,
    //Hibernate.DayReportPersistence@1974acd, Hibernate.DayReportPersistence@1afe8ef]
    //there are four objects because 4 records were fetched from the table

    return "success";
}
}

这是执行查询并返回结果的 dayReportQuery.java

public class DayReportQuery {

public List<DayReportPersistence> list(){
    Session session = HibernateConnection.getSessionFactory().getCurrentSession();
    session.beginTransaction();
    List<DayReportPersistence> dayReportsList = null;
    try {
        dayReportsList = (List<DayReportPersistence>) session.createQuery(
            "from DayReportPersistence").list();
        session.getTransaction().commit();

    } catch (HibernateException e) {
        System.out.println(e.getMessage());
        session.getTransaction().rollback();

    }
    return dayReportsList;
}
}

这是我的jsp页面,应该显示数据

<table>
<s:iterator value="dayReportsList" var="dayReport">
    <tr>
        <td><s:property value="Customer_Code"/></td>
        <td><s:property value="Contact_Code"/></td>
        <td><s:property value="Employee_Code"/></td>
        <td><s:property value="Enquiry_Code"/></td>
        <td><s:property value="Stage"/></td>
        <td><s:property value="Type"/></td>
        <td><s:property value="Date"/></td>
    </tr>
</s:iterator>
</table>

我不明白我做错了什么。

【问题讨论】:

    标签: hibernate jsp struts2 displayobject


    【解决方案1】:

    确保您的 DayReportPersistence 类对于您要查找的字段(如 Customer_Code、Contact_code 等)具有正确的 getter 和 setter

    另外,我注意到这些都是用下划线大写的,Java 变量通常不是这种情况。

    &lt;s:property value="Customer_Code"/&gt; 应该是&lt;s:property value="customerCode"/&gt;

    DayReportPersistence 类中的 getter 将是 getCustomerCode()

    编辑: 大写确实很重要。如果您的吸气剂是getContact_Code(),那么您应该将其称为&lt;s:property value="contact_Code"/&gt;。注意contact_Code中的小写字母“c”

    【讨论】:

      【解决方案2】:

      除了命名约定之外,我可能会建议在使用您的操作类的 Preparable 实现触发执行方法之前设置您的列表。如果一个字段被错误地命名,它将是空白的,如果列表不为空或为空,您仍然应该在 jsp 上得到一些东西。

      public class viewDayReportAction extends ActionSupport implements Preparable{
          private static final long serialVersionUID = 9149826260758390091L;
      
          //DayReportPersistence is the class which maps the table in hibernate
          private List<DayReportPersistence> dayReportsList;
      
          public void prepare(){
              this.dayReportsList=dayReportQuery.list();
          }
          ...
      }
      

      此方法将在执行方法之前触发,在执行中填充列表可能是您的问题。然后您可以删除 this.dayReportsList=dayReportQuery.list();从执行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-27
        • 2012-04-20
        • 1970-01-01
        • 2014-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-01
        相关资源
        最近更新 更多