2012-11-14 23 views
13

jest to śledzić na pytanie o accessing resources in jsp page of spring mvc app Dzięki @ kmb385 udało mi się rozwiązać ten problem, ale teraz otrzymuję następujące błędy Eclipse w moim pliku JSP javax.servlet.jsp. JspException nie mogą być rozwiązane do rodzaju iJspException i PageContext nie może zostać rozwiązany

javax.servlet.jsp.PageContext nie mogą być rozwiązane do rodzaju

jak sugerował przez kmb385, tu jest mój kontroler:

@Controller 
public class AdminController { 

     @RequestMapping("/") 
     protected ModelAndView handleRequestInternal(HttpServletRequest request, 
      HttpServletResponse response) throws Exception { 

      ModelAndView model = new ModelAndView("index"); 
      model.addObject("msg", "hello world"); 

      return model; 
     } 
    } 

i tu jest moja strona index.jsp na wszelki wypadek:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<!-- <link type="text/css" rel="stylesheet" href="css/style.css"/> --> 
<style type="text/css"> 
    <%@include file="css/style.css" %> 
    </style> 
<title>My Project - MainPage</title> 
</head> 
<body> 
<h2 class="main_heading2">My Project - MainPage</h2> 
<div style="float: right; width: 30%; text-align: center"> 
<p style="float:left;">an image should be here</p> 
<img src="images/logo.jpg" alt="Logo"/> 
<img src="${pageContext.servletContext.contextPath}/resources/images/logo.jpg" /> 
</div> 

</body> 

mam natknąć „rozwiązań” do tego, wyłączając ją w walidator JSP, ale proszę nie sugerować, to chyba można podać uzasadniony powód. Wolałbym rozwiązać ten problem właściwie

Każda pomoc docenione

UPDATE: Konstruowanie ekranu ścieżka grab wymagane przez @ kmb385 Eclipse Build Path

+0

Czy błąd jest taki, że nie można rozpoznać elementu pageContext dla typu zamiast zawartości? Zakładam też, że korzystasz z Tomcat? Zamówienie, http://stackoverflow.com/questions/8669387/javax-servlet-jsp-pagecontext- cannon-be-resolved-to-a-type –

+0

@ kmb385 Przepraszamy, masz rację, będę edytować, – jonnie

Odpowiedz

33

Spróbuj ustawić zależność servlet-api w pom.xml aby warunkiem . Ten słoik może być w konflikcie z serwerem tomcat podanym w servlet-api.jar.

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 

Również należy pamiętać o zależność JSP API ponownie ustawiony jako warunkiem:

<!-- Servlet --> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
    </dependency> 

Upewnij wszystkich zależnościach maven są wykorzystywane do budowania projektu klikając prawym przyciskiem myszy projekt > Właściwości. Na karcie wirtualnej instalacji kliknij przycisk Dodaj, następnie Java Path Path Entries, następnie Maven Dependencies i na końcu Finish.

Może być również konieczne dodanie zależności maven do ścieżki budowania. Kliknij prawym przyciskiem myszy swój projekt> Maven> Zaktualizuj konfigurację projektu.

+0

Mam dodałem, że (zaktualizowałem Mavena, odświeżony projekt i wyczyszczony projekt), ale wydaje się, że nie ma to żadnego skutku. – jonnie

+0

@jonnieM Zauważyłem inną różnicę między naszymi plikami pom.xml. –

+0

thats wydaje się usuwać 'javax.servlet.jsp.JspException nie może być rozwiązany na typ', ale teraz otrzymuję 'javax.servlet.jsp.JspWriter nie można rozwiązać na typ',' JspWriter nie może być rozwiązany do zmiennej' & 'JspFactory nie można rozwiązać na typ', a także' javax.servlet.jsp.PageContext nie można rozwiązać na typ ' – jonnie

2

Spróbuj zaimportować zajęcia.

Zmodyfikuj pierwszą linię w jsp, aby wyglądała tak;

<%@ page language="java" import="javax.servlet.jsp.PageContext" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>

+0

Pojawia się błąd 'Import javax.servlet.jsp.PageContent nie może być rozwiązany' na górze poprzednich błędów, kiedy używam tego – jonnie

+0

ok. Umieść javax.servlet.jsp.jar w swojej ścieżce klas. Pobierz stąd http://www.java2s.com/Code/JarDownload/javax/javax.servlet.jsp.jar.zip – mwangi

+0

Miałem ten słoik w moich zależnościach, ale nie rejestrowałem poprawnie, usunąłem go z kompilacji ścieżkę i ponownie zaktualizował projekt Maven i wydawało się, że to rozwiązuje. Dziękujemy za Twój wkład – jonnie

1

Dodaj do pom.Zależności xml:

 <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet.jsp</groupId> 
     <artifactId>jsp-api</artifactId> 
     <version>2.1</version> 
     <scope>provided</scope> 
    </dependency> 

JSP:

Upewnij się, aby dodać na JSP, przed tagiem:

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

Get kontekst na JSP:

<c:set var="contextPath" value="${pageContext.request.contextPath}"/> 

importu styl css:

<link type="text/css" rel="stylesheet" href="${contextPath}/css/yourCssFile.css"/> 

Dyspozytor-serwletów:

Na "wiosna-dyspozytora-servlet.xml" dodaj następujące linie:

<beans xmlns="... xmlns:mvc="http://www.springframework.org/schema/mvc" 
xsi:schemaLocation="... 
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 

<mvc:resources mapping="/resources/**" location="/resources/css/" /> 

Może trzeba dodać to adaptery:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> 
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> [Optional] 
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="order" value="0"/> 
</bean> 

wyjaśnione tutaj: how to include js and css in jsp with spring MVC

4

Jeśli pobrałeś wszystkie zależności w Maven, a błąd jest nadal nie ucieka, wykonaj następujące czynności:

  1. prawym przyciskiem myszy na projekt i przejdź do właściwości
  2. Kliknij na cel prowadzonej czasu
  3. Zaznacz pole przed serwerem, którego używasz.

To powinno zadziałać.

0

Jak rozwiązać javax.servlet.jsp.PageContext nie mogą być rozwiązane do rodzaju

1: - Wybierz swój projekt i kliknij prawym przyciskiem

2: - Idź do Właściwości

3: - Kliknij Targated Runtimes

4: - zaznaczenie "Apache Tomcat V8.0"

Używam Apache V8.0 w moim przypadku

0
This will solve the problem 

<!-- Need this to compile JSP --> 
     <dependency> 
      <groupId>org.apache.tomcat.embed</groupId> 
      <artifactId>tomcat-embed-jasper</artifactId> 
      <scope>provided</scope> 
     </dependency> 
Powiązane problemy