Question

Hy, Je veux afficher une certaine partie (un div par exemple) de mon-modèle uniquement guichet sous une certaine condition (par exemple que si je les données pour le remplir). Le problème est:

Si j'ajoute que le panneau (remplissage div) si je suis les données, une exception est levée chaque fois que j'appelle la page sans les données (parce que le guichet-id référencé n'est pas ajouté au composant arbre).

La seule solution qui est venu à mon esprit était d'ajouter un panneau vide s'il n'y a pas de données. Ce n'est pas une solution idéale parce que je suis un peu de code inutiles dans le code java et beaucoup divs vides dans mon rendu html.

Ainsi est-il une meilleure solution pour inclure plusieurs parties d'un guichet-modèle uniquement sous une condition?

Était-ce utile?

La solution

Bien que ce soit une vieille question ici pourrait être une solution plus: wicket: enceinte (et cette )

Mise à jour : Maintenant, je besoin de cette fonctionnalité par mon auto ( jetwick ). J'utilise WebMarkupContainer un pour l'état loggedIn et un pour l'état loggedOut et définir la visibilité droite:

if (loggedIn()) {            
   WebMarkupContainer loggedInContainer = new WebMarkupContainer("loggedIn");
   //## do something with the user
   User user = getUserSomeWhere();
   loggedInContainer.add(new UserSearchLink("userSearchLink"));
   add(loggedInContainer);
   add(WebMarkupContainer("loggedOut").setVisible(false));
} else {
   add(new WebMarkupContainer("loggedIn").setVisible(false));
   WebMarkupContainer loggedOutContainer = WebMarkupContainer("loggedOut");
   loggedOutContainer.add(new LoginLink() {...});
   add(loggedOutContainer);
}

L'avantage de cela pour moi est que j'empêcher un NullpointerExc // dans la ligne marquée ## et la fonction enclose de me regarder wicket plus laid dans ce cas, je pense.

Autres conseils

Comme @miaubiz dit, vous pouvez appeler setVisible (false), ou vous pouvez remplacer la méthode isVisible (), si la visibilité est conditionnelle à un autre état (champs remplis, par exemple).

Eh oui, vous voulez remplacer isVisible. Cela permet de garder le isVisible = false balises html de même rendu à la page html finale. En outre, d'après les documents (mentionné dans EmptyPanel ), vous pouvez utiliser le

Je suppose que c'est la raison pour laquelle il y a EmptyPanel . Sans connaître votre code plus je peux seulement dire que ce que je pense que vous faites est quelque chose que je ferais avec une combinaison de certains enfants de AbstractRepeater et Fragment . Si vous êtes prêt à en dire plus sur ce que vous voulez faire et peut-être fournir un code aussi, je serai heureux d'aider autant que je peux.

vous pouvez appeler setVisible (false); sur le composant que vous voulez cacher.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top