문제

JSP 파일에는이 선언이 있습니다.

<jsp:useBean scope="request" id="products" class="java.util.ArrayList<sgt.supermarket.entity.Product>"/>

이 선언은 Glassfish 2.1에서 잘 작동하지만 Tomcat 6.0으로 전환하면 예외가 발생합니다.

UseBean 클래스 속성 java.util.arraylist의 값은 유효하지 않습니다.

Tomcat에 놓친 도서관이 있습니까?

도움이 되었습니까?

해결책

EL은 매개 변수화 된 유형을 알지 못하므로 그렇게 할 필요가 없습니다. JSP/EL에는 컴파일 타임 검사가 전혀 없습니다. EL은 더 반사를 기반으로합니다. 그러나 JSP/EL 지정에 지정되지 않았기 때문에 Glassfish에서 "작동"한다는 사실에 약간 놀랐습니다.

그것과는 별도로, jsp:useBean 괜찮은 MVC 응용 프로그램에서 상당히 불필요합니다. Servlet 요청을 제어하고 전처리하는 데 사용되었습니다.

List<Product> procucts = productDAO.list();
request.setAttribute("products", products);
request.getRequestDispatcher("products.jsp").forward(request, response);

그만큼 products 이제 EL에서 액세스 할 수 있습니다 ${products}. 필요 없어 jsp:useBean.

다른 팁

레거시 코드를 다루고 있고 단순히 원시 유형의 JSP 경고를 제거하고 싶다면 라인을 이로 교체 할 수 있습니다.

<% request.setAttribute("products", 
       new java.util.ArrayList<sgt.supermarket.entity.Product>()); %>

그러나 Balusc는 여전히 옳습니다. 클래식 MVC 패턴을 사용하면 컨트롤러 에서이 제품 목록을 작성하는 것이 좋습니다. 그리고 뷰 우선 패턴을 사용하는 경우이 제품 목록을 Clean Java 코드로 작성하고 채우는 자신의 JSP 태그를 작성하는 것이 좋습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top