2013-05-16 62 views
2

我使用Spring MVC这个应用程序,它只是一个非常简单的测试目的,只是保存和查看数据从数据库。这是使用$ {context.root}设置基本网址的第一页,其中包含简单链接到另一个页面的页面。继承人从页面代码:

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

的事情是,而不是显示的链接例: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: [email protected] 

它只是显示像这个:

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); 
} 
+0

尝试'$ {pageContext.request.contextPath}'。你可以粘贴控制器代码吗?现在很难诊断问题。 – soulcheck

+0

我添加了两个视图的代码。问题是,它没关系,我怎么发送数据,它是什么页面,它是什么变量,如果我使用$ {}它只是将变量视为文本o.O – onildo

+0

@onlido也许你错过了jstl EL jars? – soulcheck

回答

5

您必须提供以下指令

<%@ 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在您的项目

2

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

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

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

1

尝试启动您的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"> 
0

因为我刚碰到这个,这是我在堆栈溢出中发现的第一个问题,与我的确切问题。我以为我会通过为我工作的解决方案。请参阅此页面。

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

基本上EL标签,如果你使用的是在web.xml中的老式JSP声明通过JSTL忽略。你可以把它添加

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

您所使用的EL标签的每一页,也可以更新到新风格的web.xml声明,其中EL标记默认情况下使用。

<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网页提供我需要的解决方案。

+0

我提供的解决方案的编辑是使用德米特里的上面的答案更新我的网络应用程序标签,因为它是更新的,然后在mkyong.com上。虽然没有解释,但我没有尝试他的答案。 –