2012-12-23 27 views
2

在我的項目中,每次打開JSP時都要爲變量賦值。 我試着用JSP中的scriptlets <% %>和EL ${},它給出了變量。

但它似乎不工作。

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

korrekteAntwort=${}後一個錯誤,是不是可以從EL ASIGN直接的變量在小腳本?

回答

8

你在混合scriptlets和EL,並期望它們「同步」運行。這是行不通的。 The one is an oldschool way of writing JSPsthe other is a modern way of writing JSPs。你應該使用這一個或另一個,而不是兩個。

回到具體問題,在引擎蓋下,EL通過PageContext#findAttribute()解決變量。因此,只需在scriptbar中完全一樣。

Frage frage = (Frage) pageContext.findAttribute("frage"); 
session.setAttribute("korrekteAntwort", frage.getKorrekteAntwort()); 

然而,如說,這是使用JSP的舊校園的方式,而不一定用於the functional requirement which you've had in mind, but didn't tell anything about「最佳」的方式。現代JSP的方法是使用JSTL<c:set>

<c:set var="korrekteAntwort" value="${frage.korrekteAntwort}" scope="session" /> 

這將是從該行,會話範圍爲${korrekteAntwort}可這正是小腳本的那條線一樣。