Files

96 lines
5.1 KiB
HTML

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<!--
Composant réutilisable: Formulaire Utilisateur (WOU/DRY Pattern)
Auteur: Lions User Manager
Version: 1.0.0
Description: Formulaire complet pour créer/modifier un utilisateur
Paramètres:
- user: UserDTO (requis) - L'utilisateur à éditer (peut être null pour création)
- formId: String (défaut: "userForm") - ID du formulaire
- mode: String (défaut: "create") - Mode: "create" ou "edit"
- showRealmSelector: Boolean (défaut: false) - Afficher le sélecteur de realm
- showPasswordFields: Boolean (défaut: true) - Afficher les champs mot de passe
- readonly: Boolean (défaut: false) - Mode lecture seule
- submitAction: String (optionnel) - Expression de méthode JSF à exécuter (ex: "#{bean.method}")
- submitOutcome: String (optionnel) - Page de redirection après soumission
- update: String (optionnel) - Composants à mettre à jour après soumission
- hasSubmitAction: Boolean (optionnel) - Indicateur si submitAction est fourni (pour éviter l'évaluation)
- useParentForm: Boolean (défaut: false) - Utiliser le formulaire parent au lieu de créer un nouveau formulaire
Exemples d'utilisation:
1. Formulaire de création:
<ui:include src="/templates/components/user-management/user-form.xhtml">
<ui:param name="user" value="#{userBean.newUser}" />
<ui:param name="mode" value="create" />
<ui:param name="submitAction" value="#{userBean.createUser}" />
</ui:include>
2. Formulaire d'édition:
<ui:include src="/templates/components/user-management/user-form.xhtml">
<ui:param name="user" value="#{userBean.selectedUser}" />
<ui:param name="mode" value="edit" />
<ui:param name="showPasswordFields" value="false" />
<ui:param name="submitAction" value="#{userBean.updateUser}" />
</ui:include>
3. Formulaire en lecture seule:
<ui:include src="/templates/components/user-management/user-form.xhtml">
<ui:param name="user" value="#{userBean.selectedUser}" />
<ui:param name="readonly" value="true" />
</ui:include>
-->
<c:set var="formId" value="#{empty formId ? 'userForm' : formId}" />
<c:set var="mode" value="#{empty mode ? 'create' : mode}" />
<c:set var="showRealmSelector" value="#{empty showRealmSelector ? false : showRealmSelector}" />
<c:set var="showPasswordFields" value="#{empty showPasswordFields ? true : showPasswordFields}" />
<c:set var="readonly" value="#{empty readonly ? false : readonly}" />
<c:set var="useParentForm" value="#{empty useParentForm ? false : useParentForm}" />
<c:choose>
<c:when test="#{useParentForm}">
<!-- Utiliser le formulaire parent - pas de formulaire ici -->
<ui:include src="/templates/components/user-management/user-form-content.xhtml">
<ui:param name="user" value="#{user}" />
<ui:param name="mode" value="#{mode}" />
<ui:param name="showRealmSelector" value="#{showRealmSelector}" />
<ui:param name="showPasswordFields" value="#{showPasswordFields}" />
<ui:param name="readonly" value="#{readonly}" />
<ui:param name="submitAction" value="#{submitAction}" />
<ui:param name="submitOutcome" value="#{submitOutcome}" />
<ui:param name="update" value="#{update}" />
<ui:param name="hasSubmitAction" value="#{hasSubmitAction}" />
<ui:param name="cancelOutcome" value="#{cancelOutcome}" />
</ui:include>
</c:when>
<c:otherwise>
<!-- Créer son propre formulaire -->
<h:form id="#{formId}">
<ui:include src="/templates/components/user-management/user-form-content.xhtml">
<ui:param name="user" value="#{user}" />
<ui:param name="mode" value="#{mode}" />
<ui:param name="showRealmSelector" value="#{showRealmSelector}" />
<ui:param name="showPasswordFields" value="#{showPasswordFields}" />
<ui:param name="readonly" value="#{readonly}" />
<ui:param name="submitAction" value="#{submitAction}" />
<ui:param name="submitOutcome" value="#{submitOutcome}" />
<ui:param name="update" value="#{update}" />
<ui:param name="hasSubmitAction" value="#{hasSubmitAction}" />
<ui:param name="cancelOutcome" value="#{cancelOutcome}" />
</ui:include>
</h:form>
</c:otherwise>
</c:choose>
</ui:composition>