Вот моя совместимая с Python 2/3 версия. Поскольку перевод api изменился.
def remove(str_, chars):
"""Removes each char in `chars` from `str_`.
Args:
str_: String to remove characters from
chars: String of to-be removed characters
Returns:
A copy of str_ with `chars` removed
Example:
remove("What?!?: darn;", " ?.!:;") => 'Whatdarn'
"""
try:
# Python2.x
return str_.translate(None, chars)
except TypeError:
# Python 3.x
table = {ord(char): None for char in chars}
return str_.translate(table)
Вы смешиваете скрипты и EL и ожидаете, что они будут запускаться «синхронно». Это просто не сработает. Один из способов написания JSPs и - это старый способ записи JSP . Вы должны использовать тот или иной, а не оба.
Возвращаясь к конкретному вопросу, под капотами EL разрешает переменные с помощью PageContext#findAttribute()
. Так что просто сделайте точно то же самое в scriptlets .
Frage frage = (Frage) pageContext.findAttribute("frage");
session.setAttribute("korrekteAntwort", frage.getKorrekteAntwort());
Однако, как сказано, это старый способ использования JSP и не обязательно «лучший» способ для функциональное требование, которое вы имели в виду, но ничего не сообщило о . Современный JSP-метод будет использовать JSTL <c:set>
:
<c:set var="korrekteAntwort" value="${frage.korrekteAntwort}" scope="session" />
Это будет доступно в области сеанса как ${korrekteAntwort}
из этой строки, что является именно тем, что строка scriptlet делает.