我正在开发一个Spring应用程序。我的问题是,当视图出现时,它不会解析来自模型的值。
application.properties
spring.application.name=test-mvc
server.context-path=/test-mvcConfig
@Configuration
@EnableWebMvc
public class ApplicationConfigurerAdapter extends WebMvcConfigurerAdapter{
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/pages/");
resolver.setSuffix(".jsp");
return resolver;
}
}应用程序
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}控制器
@Controller
@RequestMapping("/view")
public class TestController {
@RequestMapping("/greeting")
public String greeting(@RequestParam(value="name", required=false, defaultValue="World") String name, ModelMap model) {
model.addAttribute("name", name);
return "greeting";
}
}greeting.jsp
<html>
<head><title>Hello world Example</title></head>
<body>
<h1>Hello ${name}, How are you?</h1>
</body>
</html> 来自http://localhost:8080/test-mvc/view/greeting?name=Mikey的输出
你好${name},你好吗?
我还尝试返回一个ModelAndView。我不知道为什么它不把"Mikey“放在${name}的位置。
更新
每当我向JSP页面添加taglib或任何内容时,它都会显示页面源。它不会渲染页面。下面是我的pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.3.RELEASE</version>
</parent>
<properties>
<hibernate.version>5.0.5.Final</hibernate.version>
<postgres.version>9.4.1208</postgres.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.5</version>
</dependency>
</dependencies>发布于 2016-03-20 15:22:02
在pom.xml中添加下面的依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>为了避免javax.servlet.ServletException: java.lang.NoSuchMethodError: org.apache.el.lang.ELSupport.coerceToType,您可能必须在下面添加依赖项。如果您不将其添加为scope=required,那么tomcat-embed el-8.0.32.jar将被放置在您的Tomcat 8.0\webapps\AppName\WEB-INF\lib文件夹中,并将导致上述错误。如果您通过IDE或mvn Spring-boot:run命令运行应用程序,则不需要在下面添加依赖项。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<scope>provided</scope>
</dependency> 然后访问- http://localhost:8080/AppName/view/greeting?name=Mikey
检查这个回购的完整源代码。
更新:问题由于“Tomcat -embed el”依赖关系,JSP示例的tomcat war部署无法工作。已在弹簧启动- 1.4.0.M2中修复
https://stackoverflow.com/questions/36110386
复制相似问题