2 votes

Le modèle Spring MVC n'affiche pas une chaîne de caractères

Mon projet consiste à permettre à un utilisateur final de se connecter, puis de passer à une autre page pour afficher un message. Si les données de connexion sont incorrectes, un message d'erreur approprié est affiché et l'utilisateur a une nouvelle chance de se connecter. Le problème est que le message qui est censé être affiché ne l'est pas. Au lieu de cela, tout ce qui est affiché est ;

Message is: ${message}

index.jsp

<form action="login.html" method="post">
    Name: <input type="text" name="name"/>
    Password: <input type="password" name="password"/>
    <input type="submit" value="submit"/>
</form>

LoginController.java

package com.loginmvc.domain;

@Controller
public class LoginController {

@RequestMapping("/login")
public ModelAndView login(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException {

    String name = req.getParameter("name");
    String password = req.getParameter("password");

    if(password.equals("admin")) {          
        String message = "Welcome " + name;
        return new ModelAndView("profilepage", "message", message);
    } else {
        return new ModelAndView("errorpage", "message", 
                "Sorry, the name or password is incorrect.");
    }
  }
}

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
  <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>
</web-app>

spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:p="http://www.springframework.org/schema/p"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
http://www.springframework.org/schema/context  
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:component-scan base-package="com.loginmvc.domain" />
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

2voto

Vous utilisez un ancien descripteur dans votre fichier web.xml fichier. Dans ce cas, la EL sera ignorée :

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>

Si vous suivez un tutoriel, je vous recommande d'en trouver un plus récent. Cependant, en attendant, mettez à jour votre web.xml devrait résoudre votre problème immédiat :

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
...
</web-app>

0voto

nikesh adhikari Points 88

Assurez-vous que vous utilisez : ce Taglib dans votre JSP.

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

et pour imprimer le message : <c:if test="${not empty message}">${message}</c:if>

Je vous recommande vivement d'utiliser un IDE comme eclipse ou netbeans afin de pouvoir détecter facilement les erreurs et les avertissements de taglib dans votre jsp.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X