Comment utiliser dans la page JSF? Forme unique? Formes multiples? Formulaires nesteds?

J’utilise la technologie de modélisation de facettes pour mettre en page ma page dans une application JSF 2 sur laquelle je travaille.

Dans mon header.xhtml, primefaces exige que la barre de menus soit entourée de h: form.

 

Menu Items here!

Donc, dans mes pages de contenu, j’aurai un autre formulaire h: ou plus.

Cela fonctionnera-t-il simplement si je place simplement le formulaire h: dans mon template.xhtml?

   
Content

Je pense en fait à un cas d’utilisation où j’ai besoin de plusieurs h: form dans une page.

Merci

Vous pouvez utiliser plusieurs formulaires en toute sécurité dans une page JSF. Ce n’est pas différent que lorsque vous utilisez du HTML simple.

L’imbrication des éléments

n’est pas valide en HTML . Puisque JSF génère juste un tas de HTML, ce n’est pas différent dans JSF. L’imbrication de est donc également invalide dans JSF.

  ...   ...  ...  

Le comportement du navigateur quant à l’envoi d’un formulaire nested n’est pas spécifié. Cela peut ou peut ne pas fonctionner comme prévu. Il peut par exemple simplement actualiser la page sans invoquer la méthode d’action du bean. Même si vous déplacez la forme nestede (ou un composant qui la contient) en dehors de la forme parente avec la manipulation de dom (ou en utilisant par exemple le fichier appendTo="@(body)" ), cela ne fonctionnera toujours pas et il devrait y avoir aucun formulaire nested au moment du chargement de la page.

En ce qui concerne les formes que vous devez conserver, avoir un seul “dieu” est en fait une mauvaise pratique. Donc, il vaut mieux supprimer le externe du modèle principal et laisser l’en- header , la sidebar , content sections content etc. définir chacune leur propre . Plusieurs formes parallèles sont valides.

  ...    ...  

Chaque formulaire doit avoir une responsabilité claire. Par exemple, un formulaire de connexion, un formulaire de recherche, le formulaire principal, le formulaire de dialog, etc. Vous ne voulez pas traiter inutilement toutes les autres formes / entrées lorsque vous soumettez un certain formulaire.

Notez donc que lorsque vous soumettez un certain formulaire, d’autres formulaires ne sont PAS traités. Donc, si vous avez l’intention de traiter une entrée d’un autre formulaire, vous avez un problème de conception. Vous pouvez soit le mettre sous la même forme, soit utiliser des codes JavaScript pour copier les informations nécessaires dans un champ caché du formulaire contenant le bouton d’envoi.

Dans un certain formulaire, vous pouvez cependant utiliser ajax pour limiter le traitement des entrées à un sous-ensemble plus petit. Par exemple, traitera (soumettre / convertir / valider / invoquer) uniquement le composant actuel et pas les autres dans le même formulaire. Cela doit généralement être utilisé dans les cas d’utilisation où d’autres entrées dans le même formulaire doivent être remplies / rendues / basculées de manière dynamic, par exemple des menus déroulants dépendants, des listes de saisie semi-automatique, des tables de sélection, etc.

Voir également:

  • commandButton / commandLink / ajax action / listener méthode non appelée ou valeur d’entrée non définie / mise à jour – point 2
  • Qu’est-ce que vraiment supposé faire? Il ne poste que le formulaire
  • Comprendre les processus / update et JSF f: ajax Exécuter / Rendre les atsortingbuts
  • l’action ne fonctionne pas dans

J’ai été confondu par ce problème pendant un certain temps. Au lieu d’une série de formulaires indépendants, je me suis converti en un template, plutôt que d’appeler un xhtml avec des formulaires listés, généralement comme ui: include, je fais un appel à ceux anciennement ui: pages xhtml incluses: contenu capturé dans un modèle parent.