Query Parameters
Los parámetros de consulta te permiten pasar datos adicionales a través de las URL, utilizando el formato ?key1=value1&key2=value2
. Mientras que los parámetros de ruta se utilizan para pasar datos requeridos dentro de la ruta de la URL, los parámetros de consulta proporcionan un mecanismo flexible para pasar datos opcionales o adicionales. Son especialmente útiles al filtrar contenido, ordenar o manejar múltiples valores para la misma clave.
Resumen de parámetros de consulta
Los parámetros de consulta en webforJ siguen la convención típica de URL: pares clave-valor separados por =
y concatenados con &
. Se agregan a la URL después de un ?
y proporcionan una forma flexible de pasar datos opcionales, como preferencias de filtrado o ordenación.
Por ejemplo:
/products?category=electronics&sort=price
Recuperación de parámetros de consulta
Los parámetros de consulta se acceden a través del objeto ParametersBag
. Para recuperar parámetros de consulta, utiliza el método getQueryParameters()
del objeto Location
.
Así es como puedes recuperar parámetros de consulta de una URL en una vista:
@Route(value = "products")
public class ProductView extends Composite<Div> implements DidEnterObserver {
@Override
public void onDidEnter(DidEnterEvent event, ParametersBag parameters) {
ParametersBag queryParameters = event.getLocation().getQueryParameters();
String category = queryParameters.get("category").orElse("all");
String sort = queryParameters.get("sort").orElse("default");
console().log("Categoría: " + category);
console().log("Ordenar: " + sort);
}
}
En este ejemplo:
- El método
onDidEnter
recupera parámetros de consulta del objetoLocation
proporcionado por elDidEnterEvent
. - El
ParametersBag
te permite recuperar parámetros de consulta específicos utilizandoget()
, que devuelve unOptional<String>
. Puedes especificar un valor por defecto utilizandoorElse()
si el parámetro no está presente.
ParametersBag
El ParametersBag
proporciona varias variaciones de getters para ayudar con la conversión del valor de los parámetros de consulta a tipos específicos y filtrarlos. La siguiente es la lista completa de getters disponibles:
get(String key)
: Recupera el valor del parámetro como unString
.getAlpha(String key)
: Devuelve solo los caracteres alfabéticos del valor del parámetro.getAlnum(String key)
: Devuelve solo los caracteres alfanuméricos del valor del parámetro.getDigits(String key)
: Devuelve solo los dígitos numéricos del valor del parámetro.getInt(String key)
: Analiza y devuelve el valor del parámetro como unInteger
.getFloat(String key)
: Analiza y devuelve el valor del parámetro como unFloat
.getDouble(String key)
: Analiza y devuelve el valor del parámetro como unDouble
.getBoolean(String key)
: Analiza y devuelve el valor del parámetro como unBoolean
.
Estos métodos te ayudan a asegurar que los valores estén formateados y convertidos correctamente, evitando la necesidad de análisis o validación manual.
Manejo de múltiples valores para un parámetro de consulta
A veces, un parámetro de consulta puede tener múltiples valores para la misma clave, como en el siguiente ejemplo:
/products?category=electronics,appliances&sort=price
El ParametersBag
proporciona un método para manejar esto al recuperar valores como una lista:
@Route(value = "products")
public class ProductView extends Composite<Div> implements DidEnterObserver {
@Override
public void onDidEnter(DidEnterEvent event, ParametersBag parameters) {
ParametersBag queryParameters = event.getLocation().getQueryParameters();
List<String> categories = queryParameters.getList("category").orElse(List.of("all"));
String sort = queryParameters.get("sort").orElse("default");
console().log("Categorías: " + categories);
console().log("Ordenar: " + sort);
}
}
En este ejemplo:
getList("category")
recupera todos los valores asociados con la clavecategory
, devolviéndolos como una lista.
Por defecto, el método getList()
utiliza una coma (,
) como delimitador. Puedes personalizar el delimitador pasando un carácter diferente o una expresión regular como segundo parámetro al método getList(String key, String regex)
.
Casos de uso para parámetros de consulta
- Filtrado de contenido: Los parámetros de consulta se utilizan a menudo para aplicar filtros, como categorías o palabras clave de búsqueda.
- Ordenación de datos: Puedes pasar preferencias de ordenación a través de parámetros de consulta, como ordenar por precio, calificación o fecha.
- Manejo de parámetros opcionales: Cuando necesitas pasar datos que no forman parte de la estructura de ruta requerida, los parámetros de consulta ofrecen flexibilidad.
- Paso de múltiples valores: Los parámetros de consulta te permiten enviar múltiples valores para una sola clave, lo cual es útil cuando los usuarios seleccionan múltiples opciones, como categorías de productos o filtros.