2012-12-23 2 views
2

내 프로젝트에서 JSP를 열 때마다 변수를 설정해야합니다. JSP에서 스크립트 <% %>을 사용하고 변수를 다시 제공하는 EL ${}으로 시도했습니다.

하지만 작동하지 않는 것 같습니다.

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

korrekteAntwort=${} 후 오류 그것은 스크립틀릿에서 EL로부터 직접 변수 asign 수있다가요?

답변

8

스크립틀릿과 EL이 섞여 있고 "동기화되어"있을 것으로 예상됩니다. 그건 그냥 작동하지 않습니다. The one is an oldschool way of writing JSPsthe other is a modern way of writing JSPs. 둘 중 하나만 사용해야합니다.

구체적인 질문으로 돌아가서, 후드 아래에서 EL은 PageContext#findAttribute()으로 변수를 해결합니다. 따라서 정확히 스크립틀릿에서 정확히 동일하게 수행하십시오.

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

그러나가 말했듯이,이 JSP를 사용하는 oldschool 방법과 반드시 ​​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} 같은 세션 범위에서 사용할 수 있습니다.