Renvoie de vues à partir d'URI composés
Dans l'idée d'améliorer le support d'API de type REST, on veut gérer les routes HTTP dont le path est composé de plusieurs segments. On veut pouvoir définir des request-map
comme dans l'exemple suivant :
<request-map uri="foo">…</request-map>
<request-map uri="foo/bar">…</request-map>
<request-map uri="foo/bar/baz">…</request-map>
Le problème de cette fonctionnalité est qu'il existe déjà une sémantique associée au path à segments multiples. Voici les usages actuels de cette fonctionnalité:
-
Le mécanisme de vue dynamique passée dans l'URI est une fonctionnalité permettant de dynamiquement redéfinir la vue qui doit être affichée après avoir exécuter le gestionnaire de requête associé à une URI particulière. Ainsi le path
/earth/moon
sera associé avec larequest-map
avec l'attributuri="earth"
et la vue dont le nom est "moon" sera rendue. -
Les paramètres de requête dans le path est une fonctionnalité permettant de passer des paramètres de requête en utilisant une syntaxe alternative. De base une URI est définit au moyen de la syntaxe
/earth/moon?foo=1&bar=2
quit définit un path/earth/moon
et deux paramètresfoo
etbar
qui sont respectivement associés aux valeurs 1 et 2. Avec la syntaxe alternative la même URI peut être écrite/earth/moon/~foo=1/~bar=2
mais aura la même interprétation au niveau d'OFBiz.
Il faut donc adapter et/ou supprimer ces fonctionnalités pour pouvoir définir des request-map
à segments multiples. Dans le cas des vues dynamiques en utilisant les templates d'URI on pourrait définir des routes:
<request-map uri="earth">
<response name="success" type="view" value="mars"/>
</request-map>
<request-map uri="earth/{viewName}">
<response name="success" type="view" from-variable="viewName"/>
</request-map>
pour la syntaxe alternative de paramètre on peut simplement supprimer tous les usages de cette syntaxe et en les remplaçant par la syntaxe canonique.