package com.psddev.cms.view.servlet; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.Arrays; import java.util.Collections; import javax.servlet.http.HttpServletRequest; import com.psddev.dari.util.StringUtils; /** * Populates a field with the query parameter value from an HTTP request. The * parameter fetched has the same name as the field it populates unless * otherwise specified. */ @ServletViewRequestAnnotationProcessorClass(HttpParameterProcessor.class) @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface HttpParameter { String value() default ""; } class HttpParameterProcessor implements ServletViewRequestAnnotationProcessor<HttpParameter> { @Override public Object getValue(HttpServletRequest request, String fieldName, HttpParameter annotation) { String parameterName = annotation.value(); if (StringUtils.isBlank(parameterName)) { parameterName = fieldName; } String[] parameterValues = request.getParameterValues(parameterName); return parameterValues != null ? Arrays.asList(parameterValues) : Collections.emptyList(); } }