1

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>

何が間違っているのかわかりません。

4

2 に答える 2

2

DayReportPersistence クラスに、探しているフィールド (Customer_Code、Contact_code など) の正しいゲッターとセッターがあることを確認してください。

また、Java 変数では一般的ではないアンダースコアで大文字になっていることに気付きました。

<s:property value="Customer_Code"/>する必要があります<s:property value="customerCode"/>

DayReportPersistence クラスのゲッターはgetCustomerCode().

編集: 大文字は重要です。ゲッターが の場合はgetContact_Code()、 として参照する必要があります<s:property value="contact_Code"/>contact_Code の小文字「c」に注意してください

于 2011-07-30T14:05:28.917 に答える
1

命名規則は別として、実行メソッドを発行する前に、ryour アクション クラスの Preparable 実装を使用してリストを設定することをお勧めします。1 つのフィールドの名前が間違っていると空白になりますが、リストが空でも null でもない場合でも、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();
    }
    ...
}

このメソッドは、execute メソッドの前に実行されます。execute でリストが読み込まれることが問題になる場合があります。次に、 this.dayReportsList=dayReportQuery.list(); を削除できます。実行から。

于 2011-08-04T02:44:36.187 に答える