Comment comparer des Chaînes de if-else?
Je me demande si quelqu'un pouvait me donner un pointeur avec quelques pré-population en JSP:
Je suis donc tenter de pré-remplir une case à cocher en fonction de la valeur de ses clients un enregistrement de base de données. La case à cocher sera vérifié si il y a un 1 dans le champ, l'autre option serait un 0 - lorsque la case à cocher doit être vide.
Je suis actuellement en utilisant ce code dans l'entrée:
<%if (UPDATEDPREFERENCES != null)
{
if (ISNEWSLETTER != "0") {
out.println("checked");
}
}
%>
il serait donc:
<input type='checkbox' class="newsletter" name='temp_ISNEWSLETTER_FIELD' id="temp_ISNEWSLETTER_FIELD" <%if (UPDATEDPREFERENCES != null)
{
if (ISNEWSLETTER != "0") {
out.println("checked");
}
}
%>/>
En fait, on pré-remplit bien. Cependant, il renseigne également si le champ est de 0. Si je modifier pour lire:
if (ISNEWSLETTER == "1")
ensuite la case est vide si c'est un 1 ou un 0.
Ai-je raté quelque chose d'évident? Je ne suis pas un développeur, je suis à new york et mon soutien est en Belgique qu'ils ont tous quitté pour la journée.
[jsp]
presque tous les jours cette semaine :/Grâce BalusC - comme je l'ai dit, je ne suis pas un développeur. Votre aide est très appréciée. merci d'avoir pris le temps de répondre.
J'étais donc libre pour améliorer le titre alors que c'est le meilleur objet d'une recherche (je ne pouvais pas trouver immédiatement de tous les doublons de questions alors que je suis certain qu'ils existent) et de mieux référençable pour l'avenir des doublons.
OriginalL'auteur Gary Deuces Rozanski | 2011-10-06
Vous devez vous connecter pour publier un commentaire.
Les chaînes sont les objets, pas primitives. Utilisation
equals()
, pas==
/!=
. Le==
/!=
de ne pas vérifier si elles contiennent la même valeur, mais s'ils pointent vers le même objet de référence. Leequals()
va vérifier si elles contiennent la même valeur.Ainsi, au lieu de
if (ISNEWSLETTER != "0")
vous devez utiliseret au lieu de
if (ISNEWSLETTER == "1")
vous devez utiliserCe problème n'est pas lié aux JSP. Vous avez exactement le même problème en faisant de la sorte dans des conditions normales de classe Java (où ce genre de code fait appartient).
Comme une alternative, car ils représentent des nombres, vous pourriez tout aussi bien convertir
ISNEWSLETTER
à unint
. C'est un primitif, donc vous devriez être en mesure d'utiliser==
/!=
la manière habituelle. Vous pouvez, si nécessaire, convertir unString
à unint
à l'aide deInteger#parseInt()
. Ou, encore plus, si elle représente une valeur booléenne de l'état (il ne peut êtretrue
oufalse
), alors vous devriez plutôt utiliserboolean
à la place. Vous pouvez simplement l'utiliser directement dans leif
état, sans aucun besoin pour les comparaisons.OriginalL'auteur BalusC