5

私のプロジェクトでは、JSPを開くたびに変数を割り当てる必要があります。変数を返す<% %>JSPとELのスクリプトレットで試してみました。${}

しかし、それは機能していないようです。

 <% String korrekteAntwort=${frage.korrekteAntwort};%>
 <%session.setAttribute("korrekteAntwort", korrekteAntwort);%>

後にエラーが発生korrekteAntwort=${}しました。スクリプトレットでELから変数を直接割り当てることはできませんか?

4

1 に答える 1

9

スクリプトレットと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}。これは、まさにそのスクリプトレットの行が行うことです。

于 2012-12-23T00:59:20.550 に答える