Das Verhalten ist genau wie erwartet und wie von der EL-Spezifikation gefordert. Wenn Sie Version 2.2 der EL-Spezifikation verwenden, müssen Sie Abschnitt 1.8.2 lesen, der die Regeln für den Operator "==" enthält.
Die Operanden sind in diesem Fall die eine somestring.charAt(0)
char
und '1'
ist, die eine String
(NOT a char) ist, da Strings, indem entweder in EL einfache oder doppelte Anführungszeichen abgegrenzt werden können.
Wenn wir Character == String haben, dann gilt das sechste Geschoss von 1.8.2 und beide werden zu Long-Werten gezwungen. Das Zeichen wird auf 49 (der ASCII-Code für 1) gezwungen und 1 wird zu 1 erzwungen. Diese sind nicht gleich, daher das Ergebnis, das Sie sehen.
Ich schätze, dass dies nicht das ist, was Sie erwarten, aber es ist das Verhalten, das von der Spezifikation erforderlich ist und durch die Tatsache ausgelöst wird, dass einfache Anführungszeichen in EL Zeichenfolgen nicht chars.
Kann nicht auf Tomcat 7 reproduzieren. Vielleicht könnten Sie uns den tatsächlichen Code zeigen, der nicht funktioniert? – Affe
Ich führe es auf Tomcat 7. Vielleicht haben Sie keine JSTL-Bibliothek zu Ihrem Projekt hinzugefügt –