Définir de manière conditionnelle un attribut sur un élément avec des documents JSP (JSPX)
Dans les formulaires HTML, les boutons peut être désactivée en définissant le "handicapé" attribut sur eux, avec toute la valeur:
<button name="btn1" disabled="disabled">Hello</button>
Si un bouton est activé, l'attribut ne doit pas exister en tant qu'il n'y a pas de valeur définie que les handicapés attribut peut être défini de qui laisserait le bouton est activé.
C'est me causer des problèmes lorsque je veux l'activer /désactiver les boutons lors de l'utilisation de JSP Documents (jspx). En tant que JSP documents doivent être bien formés documents XML, je ne peux pas le voir de toute façon des personnes, y compris cet attribut, comme quelque chose comme ce qui suit n'est pas légal:
<button name="btn1" <%= (isDisabled) ? "disabled" : "" %/> >Hello</button>
Alors que je pourrais reproduire le tag à deux reprises à l'aide d'un JSTL si l'étiquette pour obtenir l'effet désiré, dans mon cas précis, j'ai plus de 15 attributs déclarés sur le bouton (beaucoup de javascript attributs de gestionnaire d'événement pour l'AJAX) afin de reproduire la balise va faire la JSP très salissant.
Comment puis-je résoudre ce problème, sans pour autant sacrifier la lisibilité de la JSP? Existe-il des balises personnalisées qui peut ajouter des attributs à la société mère par la manipulation de la sortie DOM?
source d'informationauteur iainmcgin
Vous devez vous connecter pour publier un commentaire.
- Je utiliser une coutume balises JSP avec les attributs dynamiques. Vous l'utilisez comme ceci:
Fondamentalement, ce que cette balise n'est de générer un élément XML avec elementName et met tous les attributs présents dans la balise, mais ignore le vide.
La balise elle-même est assez facile à mettre en œuvre, mon application est seulement de 44 lignes de long.
Vous pouvez utiliser le
<jsp:text>
balise pour résoudre ce problème à l'aide de XML valide:C'est évidemment plus bavarde que d'autres solutions. Mais c'est complètement autonome: pas de balises personnalisées nécessaires. Aussi, il échelles facilement pour autant d'attributs que vous avez besoin.
@alex
excellente solution pour utiliser l'opérateur ternaire. J'ai ajouter un peu de mon exemple, que, grâce à vous, je viens de modifier le résultat de la condition, si elle est vraie, écrit l'attribut, sinon ne pas écrire quoi que ce soit
de remplir la liste et sélectionnez la valeur utilisée, évitant c:si
à vérifier au démarrage d'un bouton radio pour éviter le c:si:
je suppose que peu de temps a passé depuis le dernier post sur ce sujet, mais je suis contre le exactement le même problème avec
<select><option selected="selected">
tags, c'est à dire de manière dynamique en déclarant que l'option est sélectionnée. Pour résoudre ce que j'ai fait une coutume tagx; j'ai posté les détails dans un autre réponse iciJe suis venu à la conclusion qu'il n'est pas beau raccourci; EL et JSP expressions ne peuvent exister qu'à l'intérieur de l'élément XML attributs (et dans le corps du contenu). Donc, vous devez effectuer les opérations suivantes;
En utilisant le scriptlet notation de ne pas travailler pour JSP documents (.jspx)
De la lecture sur un automatique jsp pour jspx convertisseur je suis tombé sur le
<jsp:element>
et<jsp:attribute>
balises. Si je comprends bien, vous devriez être en mesure de faire quelque chose commeet ont la jsp sortie du moteur
ou quelque chose comme ça. Le seul problème, signalé dans la page ci-dessus, c'est que cela ne semble pas bien fonctionner avec conditionnelle des constructions. L'auteur de l'convertisseur travaillé autour de la création de certains helper étiquettes, que vous pouvez regarder en téléchargeant le code source, je suppose. Espérons que cela aide.
Faire une étiquette de bibliothèque (.tagx) puis utiliser le scriptlet tag.
Voir http://code.google.com/p/jatl/wiki/JSPExample
Ouais c'est de la triche ... mais il fait le travail. Plus pouvez-vous faire de vraiment méchant compliqué de récursivité pour les structures en arbre de cette façon.
J'ai aussi posté une autre solution sur mon blog et de gist.github qui utilise un tas de tagx bibliothèques: http://adamgent.com/post/8083703288/conditionally-set-an-attribute-on-an-element-with-jspx
Le <%= blah %> la syntaxe n'est pas légal XML nécessaires pour les JSP Documents. Vous avez 2 options:
Espère que cela aide 🙂
J'ai été aux prises avec le même problème. J'ai essayé d'utiliser
<jsp:attribute name="disabled"/>
à l'intérieur de<c:if>
mais le compilateur essaie de joindre les personnes handicapées de l'attribut à lac:if
élément qui échoue. Mais j'ai trouvé que ce n'travail (stripes:submit
est un élément de la création d'un bouton de type submit en bandes):Il semble que
jsp:attribute
ne va pas créer un attribut " si le corps ne contient que des espaces blancs, de sorte que vous obtenez soitdisabled="disabled"
ou rien du tout.Cela ne fonctionne que si vous utilisez une sorte de taglib pour générer le bouton, et la balise de l'élément doit prendre en charge les personnes handicapées de l'attribut (passage au travers de la sous-élément HTML). Vous ne pouvez pas utiliser
jsp:attribute
pour ajouter un attribut à une crue de l'élément HTML.Je n'ai pas vraiment utiliser les JSP (et j'ai répondu une fois, puis supprimé lorsque j'ai compris le "must en XML valide" chose). Le plus propre je peux trouver est: est-ce