2008-11-06 10 views
13

dostaję ten błąd:javax.servlet.ServletException: fasola [nazwa] Nie znaleziono w zakres

javax.servlet.ServletException: bean not found within scope 

na stronie z tym na górze.

<jsp:useBean id="bean" type="com.example.Bean" scope="request" /> 

Klasa istnieje w ścieżce klas, działała dziś rano i nie dostaję tego, co nie znajduje się w zasięgu.

Jak to się dzieje i jak mogę to rozwiązać?

Odpowiedz

28

Trzeba atrybut zamiast atrybutu typeclass.

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.

+0

Chociaż jest za późno, ale w rzeczywistości jest doskonałym wyjaśnieniem @BalusC – dildeepak

1

Należy dodać

<jsp:useBean id="givingFormBean" type="some.packg.GivingForm" scope="request" /> 

Ponieważ domyślnie fasola jest looked on the page scope

Powiązane problemy