2009-06-25 4 views
0

Ich habe den folgenden Code, um eine Benutzer-ID-Variable zu setzen:Zeichen '#' vor EL-Ausdruck in einem JSTL-Tag verwendet verhält sich seltsam

(userId in früheren Code eingestellt)

<c:set var="userId" value="(Cust#${userId})" /> 

Welche der folgenden erzeugt string: (Cust # $ {userId})

Der folgende Code funktioniert wie erwartet, aber:

<c:set var="userId" value="(Cust# ${userId})" /> 

zeigt die folgende Zeichenfolge (Cust # 0001) an.

Warum verhindert das Zeichen '#' vor einem Ausdruck '$ {string}', dass die Zeichenfolge ausgewertet wird? Gibt es eine Arbeit, die ich verwenden könnte, die nicht ein Leerzeichen einfügen muss?

Antwort

3

Da JSF verwenden würde:

#{userId} 

einer Benutzer-ID zurückzukehren, würde ich wage zu vermuten, dass es sich dabei entweder um einen Fehler oder erwartete Verhalten von dem # Zeichen verursacht macht der Parser unglücklich. Verwenden Sie einfach entweder:

<c:set var="userId" value="(Cust&#35;${userId})" /> 
<c:set var="userId" >(Cust&#35;${userId})</c:set> 
+0

danke für die Informationen + Vorschlag. – AndreiM

+1

Ich denke £ repräsentiert das Währungssymbol '£'. & # x0023; wäre die Unicode-Entität '#'. – McDowell

+0

Ja, definitiv richtig (Ich habe meine Antwort bearbeitet) – stevedbrown

2

Ich testete die oben genannten und es funktioniert nicht. Seine Ausgabe wäre:

Cust # 0002 oder was auch immer.

Sie können eine Escape verwenden, um es richtig zu arbeiten. Zum Beispiel:

<c:set var="userId" value="(Cust\#${userId})" /> 

Die Ausgabe lautet:

Cust # 0002