2014-02-18 107 views
2

输出显示$ {message}而不是“Spring”。
是否有任何依赖需要显示我的消息的价值?
我已经使用了Spring MVC,但是我使用了xml配置。我在这里错过了什么吗? 希望你能帮我弄清楚这一点。不显示Spring MVC模型属性

<dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.1.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- Spring dependencies --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      <version>1.1.3</version> 
     </dependency> 

    </dependencies> 

控制器

package com.jwlayug.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 

@Controller 
public class ControllerA { 
    @RequestMapping(value = "/hello") 
     public String printHello(Model model) { 
      model.addAttribute("message", "Spring"); 
      System.out.println("this method is called!"); 
      return "hellow"; 
     } 


} 

配置

package com.jwlayug.config; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.view.JstlView; 
import org.springframework.web.servlet.view.UrlBasedViewResolver; 

@Configuration 
// Marks this class as configuration 
// Specifies which package to scan 
@ComponentScan("com.jwlayug") 
// Enables Spring's annotations 
@EnableWebMvc 
public class Config { 

    @Bean 
    public UrlBasedViewResolver setupViewResolver() { 
     UrlBasedViewResolver resolver = new UrlBasedViewResolver(); 
     resolver.setPrefix("/WEB-INF/views/"); 
     resolver.setSuffix(".jsp"); 
     resolver.setViewClass(JstlView.class); 
     return resolver; 
    } 
} 


package com.jwlayug.config; 
import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 

import javax.servlet.ServletRegistration.Dynamic; 

import org.springframework.web.WebApplicationInitializer; 
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; 
import org.springframework.web.servlet.DispatcherServlet; 

public class WebInitializer implements WebApplicationInitializer{ 
    public void onStartup(ServletContext servletContext) 
      throws ServletException { 

     AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); 
     ctx.register(Config.class); 

     ctx.setServletContext(servletContext); 

     Dynamic servlet = servletContext.addServlet("dispatcher", 
       new DispatcherServlet(ctx)); 
     servlet.addMapping("/"); 
     servlet.setLoadOnStartup(1); 

    } 
} 

JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<!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"> 
<title>Insert title here</title> 
</head> 
<body> 
${message} 
<c:out value="${message}" /> 
</body> 
</html> 
+0

你能告诉我们你的bean配置?即请添加controllerA-context.xml,如果有的话。 – Dropout

+0

我没有任何xml的。 – james

+0

我不使用这种方式,所以我现在只是大部分猜测。我可以看到您的解析器根据控制器返回的内容指定了使用的JSP。但是指定哪个控制器在哪个bean等中的配置在哪里?现在就问。 – Dropout

回答

-1

您需要的模式返回到视图。

@Controller 
public class ControllerA { 
    @RequestMapping(value = "/hello") 
    public ModelAndView printHello() { 
     ModelAndView mav = new ModelAndView("viewname"); 
     mav.addObject("message", "Spring"); 
     return mav; 
    } 
} 

然后在你的JSP:

${message} 
+1

他实际上没有。完全可以返回JSP文件的名称/路径。这取决于配置。请参阅setupViewResolver – Dropout

+0

仍然无法使用此代码。它显示$ {message}不是Spring。该死的。这很难>。<没有错误信息。 – james

13

我发现通过添加以下代码两行对你的JSP顶部的解决方案..

<%@page contentType="text/html;charset=UTF-8" language="java" %> 
<%@page isELIgnored="false" %> 
+0

这一个完全为我工作:) – exexzian

+1

这是正确的解决方案。将您的答案标记为“已接受的答案”,以便其他人也能快速获得答案 –