Символ «#» перед выражением EL, используемым внутри тега JSTL, ведет себя странно - PullRequest
0 голосов
/ 25 июня 2009

У меня есть следующий код для установки переменной userId:

(идентификатор пользователя установлен в предыдущем коде)

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

, которая производит следующую строку: (Cust # $ {userId})

Следующий код работает, как и ожидалось:

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

отображает следующую строку (Cust # 0001).

Почему символ '#' перед выражением '$ {string}' препятствует оценке строки? Могу ли я использовать какую-то работу, которая не требует вставки пробела?

Ответы [ 2 ]

3 голосов
/ 25 июня 2009

Поскольку JSF будет использовать:

#{userId}

Чтобы вернуть идентификатор пользователя, я бы рискнул предположить, что это либо ошибка, либо ожидаемое поведение, вызванное знаком #, делающим парсер несчастным. Просто используйте любой из:

<c:set var="userId" value="(Cust&#35;${userId})" />
<c:set var="userId" >(Cust&#35;${userId})</c:set>
2 голосов
/ 09 марта 2010

Я проверял выше, и это не работает. Его результат будет:

Cust # 0002 или что-то еще.

Вы можете использовать escape, чтобы заставить его работать правильно. Например:

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

Вывод:

Каст # 0002

...