2013-05-16 65 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上。雖然沒有解釋,但我沒有嘗試他的答案。 –