Navigational Frame Titles
Dans webforJ, toutes les routes sont rendues au sein d'un Frame, qui sert de conteneur de niveau supérieur responsable de l'affichage du contenu de la route actuelle. Au fur et à mesure que les utilisateurs naviguent entre différentes routes, le titre du Frame est mis à jour dynamiquement pour refléter la vue active, aidant à fournir un contexte clair sur la position actuelle de l'utilisateur au sein de l'application.
Le titre d'un Frame peut être défini de manière statique à l'aide d'annotations ou dynamiquement par le code à l'exécution. Cette approche flexible permet aux développeurs de définir des titres qui s'alignent sur le but de chaque vue, tout en s'adaptant à des scénarios ou des paramètres spécifiques si nécessaire.
Titre du Frame avec annotations
La manière la plus simple de définir le titre d'un Frame dans la vue est d'utiliser l'annotation @FrameTitle
. Cette annotation vous permet de définir un titre statique pour n'importe quel composant de route, qui est ensuite appliqué au Frame lorsque le composant est rendu.
Utilisation de l'annotation @FrameTitle
L'annotation @FrameTitle
est appliquée au niveau de la classe et vous permet de spécifier une valeur de chaîne qui représente le titre de la page. Lorsque le routeur navigue vers un composant avec cette annotation, le titre spécifié sera automatiquement défini pour la fenêtre du navigateur.
Voici un exemple :
@Route
@FrameTitle("Tableau de bord")
public class DashboardView extends Composite<Div> {
public DashboardView() {
// logique de vue
}
}
Dans cet exemple :
- La classe
DashboardView
est annotée avec@Route
pour définir la route. - L'annotation
@FrameTitle("Tableau de bord")
définit le titre du Frame sur "Tableau de bord". - Lorsque l'utilisateur navigue vers
/dashboard
, le titre du Frame sera automatiquement mis à jour avec la valeur spécifiée.
Cette méthode est utile pour les routes qui ont un titre statique et qui ne nécessitent pas de mises à jour fréquentes en fonction du contexte de la route.
@AppTitle
et @FrameTitle
Si le titre de l'application est défini, le titre du Frame l'incorporera. Par exemple, si l'application définit le titre comme @AppTitle("webforJ")
et que le titre du Frame est défini comme @FrameTitle("Tableau de bord")
, le titre final de la page sera Tableau de bord - webforJ
. Vous pouvez personnaliser le format du titre final dans l'annotation @AppTitle
en utilisant l'attribut format
si nécessaire.
Titres de Frame dynamiques
Dans les cas où le titre du Frame doit changer dynamiquement en fonction de l'état de l'application ou des paramètres de route, webforJ fournit une interface appelée HasFrameTitle
. Cette interface permet aux composants de fournir un titre de Frame en fonction du contexte de navigation actuel et des paramètres de route.
Implémentation de l'interface HasFrameTitle
L'interface HasFrameTitle
contient une méthode unique getFrameTitle()
, qui est invoquée avant que le titre du Frame ne soit mis à jour. Cette méthode offre la flexibilité de générer un titre dynamiquement en fonction du contexte de navigation ou d'autres facteurs dynamiques.
@Route("profile/:id")
public class ProfileView extends Composite<Div> implements HasFrameTitle {
public ProfileView() {
getBoundComponent().add(new H1("Page de profil"));
}
@Override
public String getFrameTitle(NavigationContext context, ParametersBag parameters) {
// Définir dynamiquement le titre du Frame en utilisant les paramètres de route
String userId = parameters.get("id").orElse("Inconnu");
return "Profil - Utilisateur " + userId;
}
}
Dans cet exemple :
- Le composant
ProfileView
implémente l'interfaceHasFrameTitle
. - La méthode
getFrameTitle()
génère dynamiquement un titre en utilisant le paramètreid
de l'URL. - Si la route est
/profile/123
, le titre sera mis à jour sur "Profil - Utilisateur 123".
Vous pouvez combiner à la fois des méthodes statiques et dynamiques. Si un composant de route a à la fois une annotation @FrameTitle
et implémente l'interface HasFrameTitle
, le titre fourni dynamiquement par getFrameTitle()
prévaudra sur la valeur statique de l'annotation.