We are using MixedParamUrlCodingStrategy to create "user/SEO friendly" URLs
for booking website. The booking can have two different types as fixed or
flexible that do share some parameters, but not stuff like time periods.
>From what I read in API it is my understanding that if some of the
parameters are not specified these will get empty string as value.
However when we tried this we can see that setResponsePage gets correct set
PageParameters, however on the page side the values are associated with keys
that should have been empty strings.

Example

MixedParamUrlCodingStrategy search = new MixedParamUrlCodingStrategy(
            MyHttpParams.SEARCH,
            SearchDestinationPage.class,
            new String[]{
                MyHttpParams.SEARCH_TYPE,
                /**
                 * Search params
                 */
                MyHttpParams.DEPARTURE_AIRPORT,
                MyHttpParams.RETURN_AIRPORT,
                /**
                 * Fix dates search params
                 */
                MyHttpParams.DEPARTURE_DATE,
                MyHttpParams.RETURN_DATE,
                MyHttpParams.BUDGET,
                /**
                 * Flex dates search params
                 */
                MyHttpParams.FROM_DAY,
                MyHttpParams.TO_DAY,
                MyHttpParams.WEEKS,
                MyHttpParams.MONTHS,
                /**
                 * Secondary params
                 */
                MyHttpParams.ADULTS,
                MyHttpParams.CHILDREN,
                MyHttpParams.INFANT,
                MyHttpParams.DEPARTURE_TIME,
                MyHttpParams.RETURN_TIME,
                MyHttpParams.CLASS_TYPE,
                MyHttpParams.DESTINATION_ID
            }
        );
        mount(search);

Model to PageParameters
public PageParameters toPageParameters() {
        PageParameters params = new PageParameters();
        params.put(MyHttpParams.DEPARTURE_AIRPORT,
getDepartureAirportIATA());
        params.put(MyHttpParams.RETURN_AIRPORT, getArrivalAirportIATA());
        params.put(MyHttpParams.DEPARTURE_DATE, format(getDepartureDate(),
new SimpleDateFormat("ddMMyyyy")));
        params.put(MyHttpParams.RETURN_DATE, format(getArrivalDate(), new
SimpleDateFormat("ddMMyyyy")));
        params.put(MyHttpParams.BUDGET, getBudget());
        params.put(MyHttpParams.ADULTS, getAdults());
        params.put(MyHttpParams.CHILDREN, getChildren());
        params.put(MyHttpParams.INFANT, getInfants());
        params.put(MyHttpParams.DEPARTURE_TIME, getDepartureTime());
        params.put(MyHttpParams.RETURN_TIME, getArrivalTime());
        params.put(MyHttpParams.CLASS_TYPE, getFlightClass());
        return params;
    }


IN ><  OUT
from=PRG  ><  search_type=PRG
to=BTS  ><  from=BTS
from_date=05052011  ><  to=05052011
to_date=12052011  ><  from_date=12052011
budget=500.0  ><  to_date=500.0
adults=1  ><  budget=1
children=0  ><  from_day=0
infant=0  ><  to_day=0
departure_time=00:00-23:59  ><  weeks=00:00-23:59
return_time=00:00-23:59  ><  months=00:00-23:59
class_type=ECONOMY  ><  adults=ECONOMY
destination_id=44281  ><  children=44281

I hope that my question makes sense.

Peter

Reply via email to