gpt4 book ai didi

spring - 无法使用 javaconfig 解析名称为 'htmlviews/index.html' 的 servlet 中名称为 'dispatcher' 的 View

转载 作者:行者123 更新时间:2023-12-04 17:45:15 26 4
gpt4 key购买 nike

我得到这样的异常(exception):

javax.servlet.ServletException: Could not resolve view with name 'htmlviews/index.html' in servlet with name 'dispatcher'
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1211)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1011)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:955)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

当我尝试连接到完全 Java 配置的 Spring Web 服务时。

我的配置类:
@Configuration
@EnableWebMvc
@ComponentScan({"config", "controller"})
public class MyWebConfig extends WebMvcConfigurerAdapter {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/htmlviews/**").addResourceLocations("/htmlviews/");
}
}

初始化程序:
    public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{MyWebConfig.class};
}

protected Class<?>[] getServletConfigClasses() {
return null;
}

protected String[] getServletMappings() {
return new String[]{"/"};
}
}

和 Controller :
@Controller
public class IndexController {

@RequestMapping(value = "/")
public String getIndexPage() {
return "htmlviews/index.html";
}

@RequestMapping(value = "/{[path:[^\\.]*}")
public String index() {
return "forward:/";
}
}

整个文件结构很简单:

whole file srtucture is simple :

我正在使用 Idea IDE(也在 eclipse 中尝试过,同样的异常)并尝试在 tomcat 上部署。在 pom.xml ,我添加了“jSTL”依赖项,但这无助于解决问题。
使用 xml配置一切正常。我不知道我的spring java配置有什么问题,它 super 简单,也许我忘记了什么?

已修复
当我从 4.1.0.RELEASE 更改 spring 版本时,一切都开始工作了至 4.2.3.RELEASE .我不知道为什么它不适用于 4.1.0.RELEASE .也许有人可以解释一下,只是好奇。

最佳答案

问题

Spring 正在尝试在您的 下查找 View webapp 目录。由于您没有任何 查看解析器 , Spring 无法解析“htmlviews/index.html”。换句话说,Spring 不知道它是什么。
您有一个 资源解析器 对于您的 html 页面,这是可以的,因为 HTML 是静态的。

可能的解决方案 1

在您的 MyWebConfig 类,添加以下内容:

@Override
public void configureViewResolvers(final ViewResolverRegistry registry) {
registry.jsp("/htmlviews/", ".jsp");
}

或者你可以这样做:
@Bean
public InternalResourceViewResolver jspViewResolver() {
InternalResourceViewResolver resolver= new InternalResourceViewResolver();
resolver.setPrefix("/htmlviews/");
resolver.setSuffix(".jsp");
return resolver;
}

将您的 html 页面更改为 jsp 页面,我建议这样做,因为 jsp 只是比 HTML 更强大。

可能的解决方案 2

把你的所有 htmlviews 资源下的文件夹,以便 Spring 可以根据您的资源解析器找到它。

更新

在 Spring 启动应用程序中很少需要 HTML。我强烈建议使用模板引擎( Thymeleaf 是首选)。这样,对于大多数多页应用程序来说,明智的默认设置就足够了。

关于spring - 无法使用 javaconfig 解析名称为 'htmlviews/index.html' 的 servlet 中名称为 'dispatcher' 的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37310864/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com