Jak uzyskać dostęp do <c: set var> w <% = scriptlet%> [duplicate]

Dec 05 2020

Zacząłem od jednego samouczka dotyczącego tagów JSTL. Użyty samouczek dotyczący repozytoriów jest zbyt stary, więc chciałem wypróbować go na swój sposób, używając nowszych wersji. Niestety teraz utknąłem. Powiem ci, co zrobiłem, więc mam nadzieję, że możesz mi pomóc.

Pobrałem 2 pliki jar z tych dwóch linków: api , implementacja .

Pliki jar, które dostałem, skopiowałem w środku WebContent/Web-INF/lib. Teraz, jeśli to zrobię, pojawia się błąd:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
<body>

<c:set var="varA" value="hello world" />
<%=varA %> //varA cannot be resolved to a variable

</body>
</html>

Szczerze mówiąc, nie mam pojęcia, dlaczego potrzebujemy instrukcji importu, gdy pliki jar są dosłownie w libfolderze mojego projektu . Poza tym, czy ktoś wie, co tu jest nie tak i dlaczego edytor nie może znaleźć mojej zmiennej varA ?

Odpowiedzi

1 LiveandLetLive Dec 05 2020 at 20:49

Do zmiennych ustawionych za pomocą znaczników JSTL nie można uzyskać bezpośredniego dostępu za pomocą skryptletu. Dostęp można uzyskać na dwa sposoby varA.

1. Korzystanie ze znaczników JSTL:

<c:set var="varA" value="hello world" />
<c:out value="${varA }"></c:out>

2. Używanie pageContext.getAttribute:

<c:set var="varA" value="hello world" />
<%=pageContext.getAttribute("varA")%>