Ulrich Stärk schrieb:
it might be the right time now to post your complete page class and page
template before we start doing wild guesses...


Here you are:


Search2.java:
-----------------------------------------------------------------------

public abstract class Search2
    extends BaseBookingPage
    implements PageBeginRenderListener {

    @InitialValue("ognl:true") @Persist
    public abstract boolean isSearchForHotels();
    public abstract void setSearchForHotels(boolean doIt);

    @InitialValue("ognl:true") @Persist
    public abstract boolean isSearchForHolidayHomes();
    public abstract void setSearchForHolidayHomes(boolean doIt);


    @Component(
            type = "Form",
            id = "bookingForm",
            bindings = {
                "listener=ognl:listeners.submitForm",
                "delegate=ognl:beans.delegate",
                "clientValidationEnabled=ognl:false" })
    public abstract IComponent getBookingForm();


    /* (non-Javadoc)
* @see org.apache.tapestry.event.PageBeginRenderListener#pageBeginRender(org.apache.tapestry.event.PageEvent)
     */
    public void pageBeginRender(PageEvent arg0) {

        assertReservationNotLocked();

        initializeArrivelDate();
        initializeDepartureDate();

//        if (passengerModel == null) {
//            passengerModel = new IntegerPropertySelectionModel(1, 8);
//        }

    }



    private void initializeArrivelDate() {

        if(getArrivalDate() == null) {
            Date arrival = DateUtil.addDays(DateUtil.getTodaysMidnight(),
                 getManager().getReservationStartDateOffsetDays());
            setArrivalDate(arrival);
        }
    }

    private void initializeDepartureDate() {
        if(getDepartureDate() == null) {
Date departure = DateUtil.addDays(DateUtil.getTodaysMidnight(),
                 getManager().getReservationStartDateOffsetDays() + 1);
            setDepartureDate(departure);
        }

    }



    /**
     * Listener-Methode: Formular-Übermittlung: ReservationQuery-Objekt mit
     * den Eingabedaten des Kunden befüllen.
     * <p>
     * Noch mache ich die Validierung hier von Hand.
     *
     */
    public IPage submitForm() {

        assertReservationNotLocked();

        ReservationQuery query = getReservationQuery();

        // An- und Abreise
        query.setArrivalDate(getArrivalDate());
        query.setDepartureDate(getDepartureDate());
        calculateNights(query);

        query.setLocationSearchTerm(getLocationSearchTerm());
        query.setPassengers(getPassengerQty());

        // Art der Objekte, die gesucht werden
        query.setSearchForHotels(isSearchForHotels());
        query.setSearchForHolidayHomes(isSearchForHolidayHomes());

        // Validierung ausgelagert
        IValidationDelegate delegate = getDelegate();
        validate(delegate);

        if(isInError()) {
            return null;
        }
        return getNextPage().startNewSearch();

    }

    protected void calculateNights(ReservationQuery query) {
        DateTime arrival = new DateTime(query.getArrivalDate());
           DateTime departure = new DateTime(query.getDepartureDate());
           Days days = Days.daysBetween(arrival, departure);
           int nights = days.getDays();
           query.setNights(nights);
    }


    /**
     * Manuelles Validieren der Eingabedaten
     */
    protected void validate(IValidationDelegate delegate) {

        int days = getManager().getReservationStartDateOffsetDays();

        if(getArrivalDate().before(DateUtil.daysFromToday(days - 1))) {
            // arrivalDate ist zu früh
            delegate.record(getArrivalDatePicker(),
                "Buchungen m\u00fcssen mindestens " + days
                + " Tage in der Zukunft liegen");
        }

if(getReservationQuery().getNights() == null || getReservationQuery().getNights() <= 0 ) {
            delegate.record(getArrivalDatePicker(),
"Bitte die Daten für An- und Abreise \u00fcberpr\u00fcfen");
        }


if(isSearchForHotels() == false && isSearchForHolidayHomes() == false) { setErrorMessage("Bitte w\u00e4hlen Sie aus, welche Unterkunftsarten " +
                "gesucht werden sollen");
        }

    }

    /** Anzahl der Passagiere */
public IPropertySelectionModel passengerModel = new IntegerPropertySelectionModel(1, 8);

    /** Datum der Ankunft */
    @Persist
    public abstract Date getArrivalDate();
    public abstract void setArrivalDate(Date arrivalDate);

    /** Datum der Abreise */
    @Persist
    public abstract Date getDepartureDate();
    public abstract void setDepartureDate(Date departureDate);


    /** Anzahl der mitreisenden Passagiere */
    @Persist
    public abstract Integer getPassengerQty();

    /** Suchbegriff für die Suche nach einer Location */
    @Persist
    public abstract String getLocationSearchTerm();
    public abstract void setLocationSearchTerm(String term);

    @InjectPage("booking/List")
    public abstract de.net22.oos.web.pages.booking.List getNextPage();

    /**
     * Tapestry-Komponente: Formularfeld Ankunft
     */
    @Component(
       bindings = {
         "value=ognl:arrivalDate",
         "translator=translator:date,pattern=dd.MM.yyyy",
         "validators=validators:required"})
    public abstract DatePicker getArrivalDatePicker();

    /**
     * Tapestry-Komponente: Formularfeld Ankunft
     */
    @Component(
       bindings = {
         "value=ognl:departureDate",
         "translator=translator:date,pattern=dd.MM.yyyy",
         "validators=validators:required"})
    public abstract DatePicker getDepartureDatePicker();

    @Component(
            type = "PropertySelection",
            bindings = {
                "model=ognl:passengerModel",
                "value=ognl:passengerQty",
                "validators=validators:required,min=1" })
    public abstract IFormComponent getPassengerQtySelection();


}




Search2.html:
-----------------------------------------------------------------------

<span jwcid="@PublicBorder">

<form jwcid="bookingForm">

<table width="100%" border="0">
        <tr>
                <td width="20">&nbsp;</td>
                <td><span> </span></td>
        </tr>
        <tr>
                <td width="20"></td>
                <td>
                <table width="100" border="0">
                        <tr>
                                <td valign="bottom"><img src="../images/top.gif" 
width="500"
                                        height="30"></td>
                        </tr>
                        <tr>
                                <td>
                                <table width="500" border="1" cellpadding="3" 
cellspacing="0"
                                        bordercolor="#000000" bgcolor="#CCCCCC">
                                        <tr>
                                                <td bgcolor="#FFFFFF">
                                                
                                                
<span jwcid="@cf:ShowValidationError" delegate="ognl:beans.delegate" />

                                                <p class="TextNormal">
                                                   Bitte geben Sie den Zielort, 
das Anreisedatum und die
                                                   Aufenthaltsdauer an.
                                                </p>

                                                <table width="100%" bgcolor="#FFFFCC" 
class="formField">

                                                        <tr>
                                                                <td class="formFieldLabel" 
nowrap="nowrap">Suche nach:</td>
                                                                <td class="formField" 
nowrap="nowrap" valign="top">
                                                                    <table width="100%" border="0" 
cellspacing="0" cellpadding="0">
                                          <tr>
                                            <td width="87">
<input jwcid="[EMAIL PROTECTED]"
                                                                                          
              displayName="literal:Hotels"
                                                                                             
           value="ognl:searchForHotels"/>
                                                                                             
           <label jwcid="@FieldLabel"
                                                                                                   
            field="component:doHotelSearchCheckbox">Hotels</label>
                                            </td>
                                            <td width="213">
<input jwcid="[EMAIL PROTECTED]"
                                                                                          
      displayName="literal:Ferienhäuser/wohnungen"
                                                                                             
           value="ognl:page.searchForHolidayHomes"/>
                                                                                             
   <label jwcid="@FieldLabel"
field="component:doHolidayHomeSearchCheckbox">Ferienhäuser/wohnungen</label>
                                            </td>
                                          </tr>
                                </table>
                                </td>
                                                        </tr>
                                                        <tr>
                                                                <td class="formFieldLabel" 
nowrap="nowrap"><label
jwcid="@FieldLabel" field="component:locationSelection">Ort / Region</label></td>
                                                                <td class="formField" nowrap="nowrap" 
width="300" valign="top">
                                                                <input jwcid="[EMAIL 
PROTECTED]"
                                                                        
displayName="literal:Ort / Region"
                                                                        
value="ognl:page.locationSearchTerm"
validators="validators:required[Bitte geben Sie den gewünschten Ort oder die Region an],minLength=2[Bitte geben Sie den gewünschten Ort oder die Region an]" /></td>
                                                        </tr>

                                                        <tr>
                                                                <td 
class="formFieldLabel"><label jwcid="@FieldLabel"
                                                                        
field="component:passengerQtySelection">BlaBlubb</label></td>
                                                                <td 
class="formField"><input jwcid="passengerQtySelection"
                                                                        
displayName="literal:Personenanzahl" /></td>
                                                        </tr>

                                                        <tr>
                                                                <td nowrap="nowrap" 
class="formFieldLabel"><label
jwcid="@FieldLabel" field="component:arrivalDatePicker">Ankunft</label></td> <td width="300" valign="top" nowrap="nowrap" class="formField"><input jwcid="arrivalDatePicker" displayName="literal:Tag der Ankunft" /></td>
                                                        </tr>
                                                        <tr>
                                                                <td class="formFieldLabel" 
nowrap="nowrap"><label
jwcid="@FieldLabel" field="component:departureDatePicker">Abreise</label></td> <td class="formField" nowrap="nowrap" width="300" valign="top"><input
                                                                        
jwcid="departureDatePicker"
                                                                        
displayName="literal:Tag der Abreise" /></td>
                                                        </tr>
                                                </table>


                                                <div align="right">
                                                    <input jwcid="@ImageSubmit"
                                                           type="image"
                                                               
image="asset:proceedButton"
                                                               value="weiter"
                                                               name="weiter"
                                                               
class="formButton"
                                                               /></div>
                                                </td>
                                        </tr>
                                        <tr>
                                                <td bgcolor="#FFFFFF">
                                                <div align="center"><img 
src="../images/test.jpg"
                                                        alt="Gute Reise" width="450" 
height="200"></div>
                                                </td>
                                        </tr>
                                </table>
                                </td>
                        </tr>
                </table>
                </td>
        </tr>
        <tr>
                <td width="20">&nbsp;</td>
                <td>&nbsp;</td>
        </tr>
</table>

</form>

</span>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to