Question

Je crée une balise Java Struts personnalisée permettant de créer et de formater une zone de sélection html de manière normalisée (élément de nos consignes d'utilisation).

Chaque boîte de sélection a une valeur supplémentaire / initiale qui décrit l'exigence de la valeur renvoyée par l'élément de sélection, c'est-à-dire:

  • Obligatoire - avec le libellé "Veuillez sélectionner".
  • Facultatif - "Aucune sélection" "
  • Tout sélectionner - " Tout sélectionner "

La balise personnalisée aura une propriété qui contrôle laquelle de celles-ci doit être utilisée.

Le problème est donc que je dois penser à un nom de variable qui puisse expliquer de manière adéquate qu'il contient l'une de ces trois valeurs!
Dans tous les cas, je commenterai le code, mais je préférerais que mes collègues ne soient pas obligés de rechercher le code source pour se rappeler l'objectif de la variable de balise.

Modifier: Pour mettre en contexte ce problème, la stratégie de convivialité que je suis en train de mettre en œuvre est la suivante: si plus de 5 éléments peuvent être sélectionnés, les options doivent apparaître en tant que sélection. boîte. 5 éléments ou moins apparaissent sous forme de boutons radio.
Lorsque des boutons radio sont utilisés, l'étiquette obligatoire ne sera pas affichée (la validation du formulaire se plaindra s'il n'y a pas de valeur sélectionnée de toute façon).

Était-ce utile?

La solution

REMARQUE: voir EDITER ci-dessous pour une approche différente de celle indiquée ici

Qu'en est-il de requireConstraint ?

<my:customSelect requirementConstraint="Mandatory">
   <option value="1">A</option>
   <option value="2">B</option>
   <option value="3">C</option>
</my:customSelect>

Une autre possibilité est de ne pas indiquer trois fois la valeur. Par exemple, vous pouvez plutôt fournir deux propriétés distinctes: required ( "oui" | "" non ") et selectAll ( "oui" | "non" ) pour clarifier l'intention.

MODIFIER : en fait, je peux voir comment un État à trois états pourrait toujours être utile, si je comprends correctement vos besoins. Une autre possibilité serait d'appeler la propriété mustSelect et de rendre les valeurs autorisées un (obligatoire), quelconque (facultatif) et tous (tout sélectionner). De plus, depuis " Tout sélectionner " Si cela est une possibilité, je suppose que votre balise customSelect affiche chaque option sous forme de case à cocher. Voici un exemple d'utilisation de mustSelect :

Obligatoire (au moins un)

<my:customSelect mustSelect="one">
   <option value="1">A</option>
   <option value="2">B</option>
   <option value="3">C</option>
</my:customSelect>

Facultatif (zéro ou plus)

<my:customSelect mustSelect="any">
   <option value="1">A</option>
   <option value="2">B</option>
   <option value="3">C</option>
</my:customSelect>

Tout sélectionner

<my:customSelect mustSelect="all">
   <option value="1">A</option>
   <option value="2">B</option>
   <option value="3">C</option>
</my:customSelect>

Autres conseils

"multiplicité" semblerait être le bon nom.

On dirait que vous décrivez les valeurs suivantes:

Obligatoire: 1 Facultatif: 0+ Sélectionner tout: n

C'est une question intéressante. Je dois avoir rencontré cette situation plusieurs fois auparavant, mais je n'y ai jamais vraiment pensé.

Votre problème est que votre langage de programmation prend en charge les options bidirectionnelles (par exemple zéro-ou-un) bien meilleures que les options à trois voies (zéro-un-ou-plusieurs). Le raccourci qui se pose "naturellement" est généralement le raccourci qui provient du langage de programmation, il n’existe donc pas de "naturel". raccourci pour les options à trois voies.

Dans l’esprit de KISS *, je suggère que vous ajoutiez " ZeroOneOrMany " au nom de la propriété.

[*] Keep It Simple, Stupid!

optionnel

Obligatoire / Facultatif semble être un booléen, qu'il s'agisse d'un champ facultatif.

Tout sélectionner semble presque sans lien et pourrait être sa propre propriété.

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