Mise en forme des propriétés d'entrée des vues

Pour les requêtes Web, lorsque la commande de contrôleur se termine, elle renvoie le nom d'une vue à exécuter. Cette vue peut exiger que plusieurs propriétés d'entrée lui soient transmises.

Il peut y avoir trois sources pour ces paramètres d'entrée :

  • Propriétés par défaut stockées dans la colonne PROPERTIES de la table CMDREG
  • Propriétés par défaut des fichiers de configuration Struts
  • Propriétés d'entrée à partir de l'URL

Pour une réponse de redirection, les propriétés d'entrée d'une vue peuvent être mises en forme à l'aide de l'une de ces techniques :

  • Aplanir une chaîne de requête pour prendre en charge la redirection d'URL
  • Gérer une limite de longueur de l'URL de redirection

Pour les commandes de vue en avant, le sujet de l'énumération des paramètres d'entrée et leur définition en tant qu'attributs dans le HttpServletRequestObject est examiné.

Aplanir les paramètres d'entrée dans une chaîne de requête pour HttpRedirectView

Tous les paramètres d'entrée transmis à une instruction de visualisation de redirection sont aplanis dans une chaîne de requête pour la redirection d'URL. Par exemple, supposons que l'entrée de l'instruction de visualisation de redirection contient les propriétés suivantes :


URL = "MyView?p1=v1&p2=v2";
ip1 = "iv1";   // input to original controller command 
ip2 = "iv2" ;  // input to original controller command
op1 = "ov1";
op2 = "ov2";

En fonction des paramètres d'entrée précédents, l'URL finale est


MyView?p1=v1&p2=v2&ip1=iv1&ip2=iv2&op1=ov1&op2=ov2

Notez que si la commande doit utiliser SSL, les paramètres sont chiffrés et l'URL finale apparaît en tant que


MyView?krypto=encrypted_value_of"p1=v1&p2=v2&ip1=iv1&ip2=iv2&op1=ov1&op2=ov2"

Gestion d'une URL de redirection de longueur limitée

Par défaut, tous les paramètres d'entrée de la commande de contrôleur sont propagés dans l'instruction de visualisation de redirection. S'il y a une limite au nombre de caractères dans l'URL de redirection, cela peut causer un problème. Exemple de situation dans laquelle la longueur peut être limitée : si le client utilise le navigateur Internet Explorer. Pour ce navigateur, l'URL ne peut pas dépasser 2 083 octets. Si l'URL dépasse cette limite, l'URL est tronquée. De ce fait, vous pouvez rencontrer un problème s'il existe un grand nombre de paramètres d'entrée, ou si vous utilisez le chiffrement, car une chaîne chiffrée est généralement deux à trois fois plus longue qu'une chaîne qui n'est pas chiffrée.

Il existe deux approches pour gérer une URL de redirection de longueur limitée :

  1. Ecrasez la méthode getViewInputProperties de la commande de contrôleur pour renvoyer uniquement les ensembles de paramètres qui doivent être transmis à la réponse de redirection.
  2. Utilisez un caractère spécial spécifié dans les paramètres de l'URL pour indiquer quels paramètres peuvent être supprimés de la chaîne de paramètres d'entrée.

Pour démontrer chacune des approches précédentes, prenons l'ensemble de paramètres d'entrée suivants sur la commande de contrôleur :


URL="MyView"; 
// All of the following are inputs to the original controller command.
ip1="ipv1";
ip2="ipv2";
ip3="ipv3";
iq1="iqv1";
iq2="iqv2";
ir1="ipr1";
ir2="ipr2";
is="isv";

Si vous remplacez la méthode getViewInputProperties, la nouvelle méthode peut être écrite de sorte que seuls les paramètres suivants soient transmis à l'instruction de visualisation :


ir2="ipr2";
is="isv";

Avec la deuxième approche, l'instruction de visualisation peut être appelée à l'aide de paramètres spéciaux pour indiquer que certains paramètres d'entrée doivent être supprimés. Par exemple, vous pouvez obtenir le même résultat en spécifiant les éléments suivants comme paramètre URL :


URL="MyView?ip*=&iq*=&ir1="

Ce paramètre URL indique la structure d'exécution HCL Commerce des éléments suivants :

  • La spécification ip*= signifie que tous les paramètres dont les noms commencent par ip doivent être supprimés.
  • La spécification iq*= signifie que tous les paramètres dont les noms commencent par iq doivent être supprimés.
  • La spécification ir1= signifie que le paramètre ir1 doit être supprimé.

Définition d'attributs dans l'objet HttpServletRequest pour HttpForwardView

La valeur par défaut HttpForwardViewCommandImpl énumère tous les paramètres transmis à la commande et les définit comme attributs dans l'objet HttpServletRequest.

Par exemple, supposons que l'objet requestProperties transmis à la l'instruction de visualisation avant contient les paramètres suivants :


p1="pv1";
p2="pv2";
p3=pv3;   // pv3 is an object

Ensuite, les attributs suivants sont transmis à la page JSP à l'aide de la méthode request.setAttribute().


request.setAttribute("p1", "pv1");
request.setAttribute("p2", "pv2");
request.setAttribute("p3", pv3);
request.setAttribute("RequestProperties", requestProperties);
request.setAttribute("CommandContext", commandContext);

Où :

requestProperties
Objet TypedProperty qui est transmis à la commande.
commandContext
Objet de contexte de commande transmis à la commande.
p1, p2, p3
Paramètres définis dans l'objet requestProperties.