Trzeba atrybut zamiast atrybutu type
class
.
Poniższy:
<jsp:useBean id="bean" type="com.example.Bean" scope="request" />
robi zasadzie następujące za kulisami:
Bean bean = (Bean) pageContext.getAttribute("bean", PageContext.REQUEST_SCOPE);
if (bean == null) {
throw new ServletException("bean not found within scope");
}
// Use bean ...
Podczas następujące:
<jsp:useBean id="bean" class="com.example.Bean" scope="request" />
robi w zasadzie po za kulisami:
Bean bean = (Bean) pageContext.getAttribute("bean", PageContext.REQUEST_SCOPE);
if (bean == null) {
bean = new Bean();
pageContext.setAttribute("bean", bean, PageContext.REQUEST_SCOPE);
}
// Use bean ...
Jeśli jest to działało wcześniej i to nie działa „w nagłym”, oznacza to, że coś która jest odpowiedzialna za wprowadzenie fasoli w zakresie przestał działać. Na przykład aplet, który wykonuje następujące czynności w doGet()
:
request.setAttribute("bean", new Bean());
request.getRequestDispatcher("page.jsp").forward(request, response);
Być może już powoływać się bezpośrednio przez stronę JSP URL zamiast wywoływać serwletu przez URL. Jeśli chcesz wyłączyć bezpośredni dostęp do stron JSP, umieść je w /WEB-INF
i prześlij do niego.
Chociaż jest za późno, ale w rzeczywistości jest doskonałym wyjaśnieniem @BalusC – dildeepak