3

我正在为这个应用程序使用 Spring MVC,它是一个非常简单的应用程序,仅用于测试目的,只需保存和查看数据库中的数据。这是第一个页面,其中包含指向另一个页面的简单链接,使用 ${context.root} 设置基本 url。这是页面中的代码:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Mah oeeee!</title>
</head>
<body>
    <h1>Alunos!</h1>

    <a href="${context.root}/SGE/aluno/cadastro">Novo aluno</a>
</body>

问题是,它没有显示 ex.:http://localhost:8080/SGE/aluno/cadastro在链接上,而是显示http://localhost:8080/SGE/${context.root}/SGE/aluno/cadastro. 同样的事情发生在视图页面上,它显示了来自数据库的数据:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <h1>CONSULTA</h1>
    <table>
        <tr>
            <td>Nome</td>
            <td>${aluno.nome}</td>
        </tr>
        <tr>
            <td>CPF</td>
            <td>${aluno.cpf}</td>
        </tr>
        <tr>
            <td>E-Mail</td>
            <td>${aluno.email}</td>
        </tr>
    </table>
</body>

而不是显示变量的值,例如:

Nome:     Joao
CPF:      98765482312
E-mail:   joao@joao.com

它只是这样显示:

Nome    ${aluno.nome}
CPF         ${aluno.cpf}
E-Mail  ${aluno.email}

可能是什么问题,所以我把它修好了?问题可能是tomcat上的一些配置吗?

编辑:继承人的代码,根据要求:

@RequestMapping(method = RequestMethod.GET)
public ModelAndView index() {
    return new ModelAndView("aluno/index");
}

@RequestMapping(value = "/consulta/{id}")
public ModelAndView consultar(@PathVariable int id) {
    Aluno aluno = getAlunoService().buscarPorId(id);
    return new ModelAndView("aluno/consulta", "aluno", aluno);
}
4

4 回答 4

6

您必须提供以下指令

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

如果您使用的是maven,则添加以下依赖项

  <dependency> 
       <groupId>javax.servlet</groupId>
       <artifactId>jstl</artifactId> 
       <version>1.2</version> 
 </dependency>

否则在您的项目中添加jstl.jar

于 2013-05-17T07:12:17.400 回答
5

尝试将您的 web.xml 启动为

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
于 2016-11-16T12:49:18.007 回答
3

您的网页上似乎缺少一些指令..

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

你可能不需要所有这些(取决于你想要什么),但你肯定需要一些。

于 2013-05-16T22:03:30.990 回答
3

因为我刚刚遇到了这个问题,这是我在堆栈溢出中发现的第一个问题,其中包含我的确切问题。我以为我会超越对我有用的解决方案。请参阅此页面。

https://www.mkyong.com/spring-mvc/modelandviews-model-value-is-not-displayed-in-jsp-via-el/

如果您在 web.xml 中使用旧式 JSP 声明,则基本上 EL 标记会通过 JSTL 被忽略。你可以离开它并添加

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

到您使用 EL 标记的每个页面,或者您可以更新到默认使用 EL 标记的新样式 web.xml 声明。

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://java.sun.com/xml/ns/javaee"
     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>

我希望这对其他人有帮助。非常感谢 mkyong.com 页面提供了我需要的解决方案。

于 2017-06-17T17:19:20.033 回答