[英]Spring Boot MVC not using model values in JSP
I am working on an Spring Boot MVC application. 我正在开发Spring Boot MVC应用程序。 My issue is that when the view appears, it does not parse the values from the Model.
我的问题是,当视图出现时,它不会解析模型中的值。
application.properties application.properties
spring.application.name=test-mvc
server.context-path=/test-mvc
Config 配置
@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;
}
}
Application 应用
@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 调节器
@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 greeting.jsp中
<html>
<head><title>Hello world Example</title></head>
<body>
<h1>Hello ${name}, How are you?</h1>
</body>
</html>
Output from http://localhost:8080/test-mvc/view/greeting?name=Mikey : 来自http:// localhost:8080 / test-mvc / view / greeting?name = Mikey的输出 :
Hello ${name}, How are you?
您好$ {name},您好吗?
I have also tried returning a ModelAndView. 我也尝试过返回ModelAndView。 I am not sure why it's not putting "Mikey" in where
${name}
is. 我不确定为什么不将
${name}
放在“ Mikey”中。
Update 更新
Every time I add a taglib or anything to the JSP page, it displays the page source. 每次我向JSP页面添加一个标记库或任何东西时,它都会显示页面源。 It doesn't render the page.
它不会呈现页面。 Below is my
pom.xml
下面是我的
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>
Add below dependencies in your pom.xml
: 在
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>
You might have to add below dependency to avoid javax.servlet.ServletException: java.lang.NoSuchMethodError: org.apache.el.lang.ELSupport.coerceToType
. 您可能必须添加以下依赖项,以避免
javax.servlet.ServletException: java.lang.NoSuchMethodError: org.apache.el.lang.ELSupport.coerceToType
。 If you don't add this as scope=required
then tomcat-embed-el-8.0.32.jar will be placed in your Tomcat 8.0\\webapps\\AppName\\WEB-INF\\lib
folder and will cause above error. 如果您未按
scope=required
添加它,则tomcat-embed-el-8.0.32.jar将放置在Tomcat 8.0\\webapps\\AppName\\WEB-INF\\lib
文件夹中,并会导致上述错误。 You don't need to add below dependency if you run your app from IDE or mvn Spring-boot:run
command. 如果从IDE或
mvn Spring-boot:run
命令运行应用程序,则无需添加以下依赖项。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<scope>provided</scope>
</dependency>
Then visit - http://localhost:8080/AppName/view/greeting?name=Mikey 然后访问-http:// localhost:8080 / AppName / view / greeting?name = Mikey
Check this repo for Complete Source Code . 检查此仓库以获取完整的源代码 。
UPDATE: The issue Tomcat war deployment of JSP sample is not working due to "tomcat-embed-el" dependency is fixed in Spring Boot - 1.4.0.M2 更新: 由于“ tomcat-embed-el”依赖性在Spring Boot-1.4.0.M2中已修复, 因此JSP示例的Tomcat战争部署无法正常工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.