Как правильно управлять редактированием данных в struts2-hibernate?

Я использую Struts2, Hibernate 3.5. У меня есть сложный объект графа. Таким образом, каждый раз, когда данные отправляются в режиме редактирования, мне нужно убедиться, что в запросе указаны все узлы объекта. Поэтому каждый раз, когда объект отображается в пользовательском интерфейсе, я сохраняю все идентификаторы как скрытые поля в jsp. Это правильный подход для управления редактированием данных?

2 ответа

Вы можете создать класс bean и зарегистрировать его с помощью формы jsp. Этот класс bean будет иметь все поля, которые есть у jsp. Всякий раз, когда ваш jsp будет изменен, этот класс bean автоматически обновляется. Таким образом, вам не придется сохранять значения в скрытых полях.

Ваш бобовый класс будет расширять ActionForm. Открытый класс HolidayBookingForm расширяет ActionForm {

    private String entryId;

    private String title;

    private String startDate;

    private String days;

    //getters and setters omitted

    public void readFrom(HolidayBooking booking)
    {
        if (booking != null)
        {
            if (booking.getEntryId() != 0)
                this.entryId = String.valueOf(booking.getEntryId());
            if (booking.getEntryId() != 0)
                this.days = String.valueOf(booking.getDays());
            if (booking.getStartDate() != null)
                this.startDate = new java.sql.Date(booking.getStartDate().getTime()).toString();
            this.title = booking.getTitle();
        }
    }

    public void writeTo(HolidayBooking booking)
    {
        if (booking == null)
            throw new IllegalArgumentException("Booking cannot be null");

        if (this.days != null)
            booking.setDays(Integer.parseInt(this.days));
        if (this.entryId != null)
            booking.setEntryId(Long.parseLong(this.entryId));

        // don't accept empty Strings
        if (this.title != null && this.title.trim().length() > 0)
            booking.setTitle(title);

        // assume validation has been handled
        if (this.startDate != null && this.startDate.trim().length() > 0)
            booking.setStartDate(java.sql.Date.valueOf(startDate));

    }


}
Другие вопросы по тегам