我无法在jsp中显示添加到模型中的值。我已尝试过所有内容并检查stackoverflow上的所有答案,但没有任何帮助。
为节省时间,我粘贴了部分代码:
我的pom.xml
:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
<relativePath/>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
我的java配置代码是:
@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);
}
}
和
@EnableWebMvc
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Bean
public InternalResourceViewResolver getViewResolver(){
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
我的控制器是:
@Controller
@RequestMapping(value = "workorder")
public class WorkOrderController {
@RequestMapping(value = "/toProviewPage", method = RequestMethod.GET)
public ModelAndView toPreview(){
WorkOrderVo workOrderVo = new WorkOrderVo();
workOrderVo.setId(1);
workOrderVo.setName("xxx");
workOrderVo.setPriority(1);
workOrderVo.setDetail("xxxx");
return new ModelAndView("workOrderPreview", "workOrderVo", workOrderVo);
}
}
我的jsp文件是:
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en">
<div class="form-group">
<label for="detail" class="col-sm-2 control-label">Detail</label>
<div class="col-sm-10">
<textarea class="form-control" rows="5" id="detail" name="detail" value="${workOrderVo.dreadonly="true"></textarea>
</div>
</div>
但是春天启动没有被重新启动是作为一个jsp文件,并显示所有的HTML代码是浏览器。
我写错误的地方?
答案 0 :(得分:1)
使用“嵌入式Tomcat”时,无法直接为应用程序运行main()方法。如果你查看你的POM,它表明提供了Jasper依赖关系意味着它希望你的工件被放在一个Tomcat容器中。在应用程序中运行main()方法实际上并没有加载Jasper,这就是为什么你没有看到将页面作为JSP处理的原因。对于IntelliJ,您需要设置Maven运行配置(而不是应用程序)并使用spring-boot:run,它显然会为您设置Tomcat。这是一张如何设置它的图片。
我用你的应用程序做了它,似乎正在处理JSP。我没有在GitHub中看到您在上面引用的确切代码,但我注意到预览页面有一个已处理的JSP标记。没有任何价值,但标签被替换了。我不清楚这是记录在案的所以我从this question得到了一个提示。如果有人发现官方的Spring Boot文档清楚地告诉我,我会更新它。
答案 1 :(得分:0)
我总结了目前的两个可行解决方案:
修改pom依赖关系,更改:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
到
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
使用spring-boot:run
命令启动应用程序。