Sur ma page actuelle, j'utilise JSTL pour vérifier si des données sont disponibles pour mon formulaire. Le problème auquel je suis confronté est "s'il n'y a pas de données, je ne vois pas non plus les champs de texte". Je peux le résoudre en utilisant des balises, mais cela impliquerait beaucoup d’autres types de code sur toute la page. Quelqu'un peut-il me suggérer une solution plus propre à ce problème?
<c:if test="${salesData!=null}">
<c:if test="${fn:length(salesBundle.salesArea) > 0}">
<input type="text" id="sales_area" class="salesManagerStyle">
</c:if>
</c:if>
Vous pouvez avoir plusieurs conditions dans une test
.
<c:if test="${salesData != null && fn:length(salesBundle.salesArea) > 0}">
<input type="text" id="sales_area" class="salesManagerStyle">
</c:if>
Mais vous pouvez également utiliser le mot clé empty
pour faire les deux une nullcheck et une longcheck.
<c:if test="${not empty salesData.salesArea}">
<input type="text" id="sales_area" class="salesManagerStyle">
</c:if>
C'est ce que vous pouvez obtenir de mieux, maintenant. Si vous avez besoin de réutiliser la même condition ailleurs dans la page, vous pouvez également l'enregistrer avec <c:set>
.
<c:set var="hasSalesData" value="${not empty salesData.salesArea}" />
...
<c:if test="${hasSalesData}">
<input type="text" id="sales_area" class="salesManagerStyle">
</c:if>
...
<c:if test="${hasSalesData}">
Foo
</c:if>
J'essaie de mettre le moins de logique possible dans mes pages Web,
"Le niveau de l'interface est relativement exempt de traitement des applications; les demandes de tâche des fenêtres ou des pages Web sont transmises au niveau intermédiaire" Graig Larman, Application de modèles UML et Patterns, troisième édition, page 575 - Systèmes d'information: architecture classique à trois niveaux.
Faites également le contrôle/validation au niveau du client avant de conserver les données ... mais je suppose que s'il s'agit d'héritage et que les pages Web sont les seules choses que vous pouvez toucher ... cela fait sens