/** * If value is null or value is default value then nothing is done. Otherwise the given value is * added as page parameter under the given key. Dates and TimePeriods are converted and can be * gotten by {@link #getPageParameter(PageParameters, String, Class)}. * * @param pageParameters * @param key * @param value * @see ClassHelper#isDefaultType(Class, Object) */ public static void putPageParameter( final PageParameters pageParameters, final String key, final Object value) { if (value == null) { // Do not put null values to page parameters. } else if (ClassHelper.isDefaultType(value.getClass(), value)) { // Do not put default values to page parameters. } else if (value instanceof Date) { addOrReplaceParameter(pageParameters, key, ((Date) value).getTime()); } else if (value instanceof TimePeriod) { addOrReplaceParameter( pageParameters, key, ((TimePeriod) value).getFromDate().getTime() + "-" + ((TimePeriod) value).getToDate().getTime()); } else { addOrReplaceParameter(pageParameters, key, value); } }
/** * At least one parameter should be given for setting the fill the bean with all book-markable * properties (absent properties will be set to zero). If the given bean is an instance of {@link * ISelectCallerPage} then the select/unselect methods are used, otherwise the properties will set * directly of the given bean. * * @param bean * @param parameters * @param prefix * @param bookmarkableProperties */ public static void evaluatePageParameters( final ISelectCallerPage callerPage, final Object dataObject, final Object filter, final PageParameters parameters, final String[] bookmarkableProperties) { if (bookmarkableProperties == null) { return; } // First check if any parameter is given: boolean useParameters = false; for (final String str : bookmarkableProperties) { final InitialPageParameterHolder paramHolder = new InitialPageParameterHolder(str); if (hasParameter(parameters, paramHolder.prefix + paramHolder.property) == true || hasParameter(parameters, paramHolder.prefix + paramHolder.alias) == true) { useParameters = true; break; } } if (useParameters == false) { // No book-markable parameters found. return; } for (final String str : bookmarkableProperties) { final InitialPageParameterHolder paramHolder = new InitialPageParameterHolder(str); String key = null; if (hasParameter(parameters, paramHolder.prefix + paramHolder.property) == true) { key = paramHolder.property; } else if (hasParameter(parameters, paramHolder.prefix + paramHolder.alias) == true) { key = paramHolder.alias; } if (paramHolder.isCallerPageParameter() == true) { if (callerPage == null) { log.warn("PageParameter '" + str + "' ignored, ISelectCallerPage isn't given."); } else if (key == null) { callerPage.unselect(paramHolder.property); } else { callerPage.select( paramHolder.property, parameters.get(paramHolder.prefix + key).toString()); } } else { try { final Object bean; if (paramHolder.isFilterParameter() == true) { // Use filter object bean = filter; if (bean == null) { log.warn("PageParameter '" + str + "' ignored, filter isn't given."); continue; } } else { bean = dataObject; if (bean == null) { log.warn("PageParameter '" + str + "' ignored, dataObject isn't given."); continue; } } final Method method = BeanHelper.determineGetter(bean.getClass(), paramHolder.property); if (key == null) { BeanHelper.setProperty( bean, paramHolder.property, ClassHelper.getDefaultType(method.getReturnType())); } else { final Object value = WicketUtils.getPageParameter( parameters, paramHolder.prefix + key, method.getReturnType()); BeanHelper.setProperty(bean, paramHolder.property, value); } } catch (final Exception ex) { log.warn("Property '" + key + "' not found. Ignoring URL parameter."); } } } }