Попытка отобразить данные, извлеченные из базы данных на странице JSP (я использую Struts 2 с Hibernate) - PullRequest
1 голос
/ 30 июля 2011

Я пытаюсь отобразить данные из моей базы данных на странице Jsp, используя Hibernate со стойками 2. Хотя ошибки нет, ничего не отображается.

Я пытался найти решение из других сообщений, но не смог.

Это класс действий.

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>

Я не понимаю, что я делаю не так

Пожалуйста, помогите как можно скорее.

Ответы [ 2 ]

2 голосов
/ 30 июля 2011

Убедитесь, что ваш класс DayReportPersistence имеет правильные методы получения и установки для полей, которые вы ищете (например, Customer_Code, Contact_code и т. Д.)

Кроме того, я заметил, что они пишутся с заглавными буквами, что некак правило, дело в переменных Java.

<s:property value="Customer_Code"/> должно быть <s:property value="customerCode"/>

, а получатель в классе DayReportPersistence будет getCustomerCode().

Редактировать: Капитализация имеет значение.Если ваш геттер getContact_Code(), то вы должны называть его <s:property value="contact_Code"/>.Обратите внимание на строчную букву букву 'c' в contact_Code

1 голос
/ 04 августа 2011

Помимо соглашений об именах, я бы, вероятно, предложил настроить ваши списки до запуска метода execute с использованием 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();
    }
    ...
}

Этот метод будет запущен до выполнения метода execute, при этом может возникнуть проблема с заполнением списка в execute. Затем вы можете удалить this.dayReportsList = dayReportQuery.list (); от выполнить.

...