当我在tomcat 8中渲染此应用程序时,我一直得到一个空白页面。我看到的唯一错误是:
o.s.boot.context.web.ErrorPageFilter: Cannot forward to error page for
request [/] as the response has already been committed.
因此我的问题是我无法呈现index.html页面。
我拿了一个静态页面,并在其中添加了一个spring-boot模块。自从我做了更改后,我再也无法呈现页面了。我在templates
我在我的控制器中添加了评论,看看他们是否被击中而且他们不是:
@Controller
public class ApplicationController {
@Autowired
ContactService contactService;
@RequestMapping(value="/", method= RequestMethod.GET)
public String contactForm() throws IOException {
System.out.println("Inside GET in Application Controller");
//model.addAttribute("contact", new Contact());
return "index";
}
@RequestMapping(value="/contact", method= RequestMethod.POST)
public String contactSubmit() throws IOException {
System.out.println("Inside POST in Application Controller");
return "index";
}
}
我使用的是Thymeleaf,但决定反对它,这就是为什么方法中的参数是空白的。
我已将项目上传到GIT,以便有人在需要时更容易找到并下载。
----------------更新1 ----------------------
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
private static final Logger LOGGER = Logger.getLogger(WebConfig.class);
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
registry.addResourceHandler("/css/**").addResourceLocations("/resources/css/");
registry.addResourceHandler("/images/**").addResourceLocations("/resources/images/");
registry.addResourceHandler("/image/**").addResourceLocations("/resources/image/");
registry.addResourceHandler("/javascripts/**").addResourceLocations("/resources/javascripts/");
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
没有其他任何东西可以表明我能想到的。如果您也选择其他文件,您可以在GIT上查看它。
答案 0 :(得分:4)
方法contactForm()
和contactSubmit()
返回String
,
尝试使用@RestController
代替@Controller
它解决了我的问题
答案 1 :(得分:3)
我在玩你的应用程序。 (git repository帮助解决了配置问题)。
问题在于您的配置属性和注释的混合。
以下步骤将有助于恢复scope :short_sleeved, -> { where short_sleeved: true }
Spring Boot行为。
default
移至index.htm
目录。webapp
复制到webapp/resources
webapp
spring.mvc.static-path-pattern=/resources/*
/
和方法本身。 Boot将处理@RequestMapping(value="/", method= RequestMethod.GET)
到index.html
的映射。 ROOT
映射混淆Boot Spring MVC自动配置。/
。下一步是根据需要映射静态资源:
WebConfig
查看我的git repository。
查看有关自定义Spring MVC configuration的详细信息。
答案 2 :(得分:1)
您的方法可能缺少'@ResponseBody'。 例如
@RequestMapping(value = "/myMethod", method = RequestMethod.POST, headers = "Accept=application/json")
@ResponseBody
public String myMethod(HttpServletRequest request, HttpServletResponse response)
{
// some business logic
retutn "Hi"
}