スクリプトレットとELを混合していて、それらが「同期して」実行されることを期待しています。それはうまくいきません。1つはJSPを書く昔ながらの方法で、もう1つはJSPを書く現代的な方法です。両方ではなく、どちらか一方を使用する必要があります。
具体的な質問に戻ると、内部では、ELは変数をによって解決しますPageContext#findAttribute()
。したがって、スクリプトレットでもまったく同じことを行います。
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}
。これは、まさにそのスクリプトレットの行が行うことです。