web-dev-qa-db-fra.com

JspException et PageContext ne peuvent pas être résolus

Ceci fait suite à une question sur accès aux ressources de la page jsp de spring mvc app Merci à @ kmb385, j’ai pu résoudre ce problème, mais j’obtiens maintenant les erreurs Eclipse suivantes dans mon fichier JSP javax.servlet.jsp.JspException ne peut pas être résolu en un type et

javax.servlet.jsp.PageContext ne peut pas être résolu en un type 

comme suggéré par kmb385, voici mon contrôleur:

@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;
        }   
    }

et voici ma page index.jsp au cas où:

<%@ 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>

J'ai trouvé des "solutions" à ce problème en le désactivant dans le validateur JSP, mais ne le suggérez pas, sauf si vous pouvez en donner une raison légitime. Je préférerais corriger ce problème correctement

Toute aide appréciée 

UPDATE: Capture d'écran de chemin de construction, comme demandé par @ kmb385 Eclipse Build Path

13
jonnie

Essayez de définir la dépendance servlet-api dans votre pom.xml sur fourni. Ce fichier jar est peut-être en conflit avec le fichier servlet-api.jar fourni par Tomcat.

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

Veillez également à inclure la dépendance jsp-api, à nouveau définie comme suit:

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

Assurez-vous que toutes vos dépendances maven sont utilisées pour générer le projet en cliquant avec le bouton droit de la souris sur votre projet> Propriétés. Sur l'onglet Assembly de déploiement, cliquez sur le bouton Ajouter, puis sur Entrées du chemin de construction Java, puis sur Dépendances Maven et enfin sur Terminer. 

Vous devrez peut-être également ajouter vos dépendances maven au chemin de génération. Cliquez avec le bouton droit sur votre projet> Maven> Mettre à jour la configuration du projet.

34
Kevin Bowersox

Si vous avez téléchargé toutes les dépendances dans maven et que l'erreur ne disparaît toujours pas, suivez les étapes ci-dessous:

  1. Faites un clic droit sur le projet et allez aux propriétés 
  2. Cliquez sur le temps d'exécution cible
  3. Cochez la case devant le serveur que vous utilisez. 

Cela devrait marcher.

4
bpjoshi

Essayez d'importer la classe.

Modifiez la première ligne de votre jsp pour ressembler à ceci;

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

2
mwangi

Ajouter aux dépendances pom.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:

Assurez-vous d’ajouter jsp avant tag:

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

Obtenez le contexte sur JSP:

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

Style d'importation css:

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

Dispatcher-servlet:

Sur votre "spring-dispatcher-servlet.xml", ajoutez les lignes suivantes:

<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/" />

Peut-être que vous devez ajouter cet adaptateur:

<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>  

expliqué ici: comment inclure js et css dans jsp avec le ressort MVC

1
mfruizs2
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>
0
Shashikant Sharma

Comment résoudre javax.servlet.jsp.PageContext ne peut pas être résolu en un type

1: - Sélectionnez votre projet et faites un clic droit 

2: - Aller aux propriétés 

3: - Cliquez sur les temps d'exécution ciblés

4: - Coche "Apache Tomcat v8.0"

J'utilise Apache v8.0 dans mon cas 

0