【问题标题】:Spring Confit issue: Mapping View to Controller Error (NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config) [duplicate]Spring Confit 问题:将视图映射到控制器错误(NoClassDefFoundError:javax/servlet/jsp/jstl/core/Config)[重复]
【发布时间】:2016-12-21 21:48:55
【问题描述】:

我是 Spring 开发的新手。请建议我在我的迷你项目中错过了什么。在 main.Main 类中通过注解定义的 Spring 配置(见下文)。 应用程序成功启动,并显示消息“...RequestMappingHandlerMapping : Mapped "{[/hello],methods=[GET]}..."

但是当我尝试打开页面 http://localhost:8080/hello?name=MyUserName 时,我收到错误消息:“...org.springframework.web.util.NestedServletException: 处理程序处理失败;嵌套异常是 java.lang.NoClassDefFoundError: javax/servlet/ jsp/jstl/core/配置..."

在我看来,我还没有完成配置 DispatcherServlet 以将控制器输出映射到 View。但我错过了什么?

这是 main.Main 类:

@Configuration
@EnableWebMvc
@ComponentScan({"controllers"})
@EnableAutoConfiguration
public class Main {

public static void main(String[] args){
    SpringApplication.run(Main.class, args);
}

@Bean
public InternalResourceViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix("WEB-INF/views/");
    viewResolver.setSuffix(".html");
    return viewResolver;
}
}

有一个Controller是用来处理用户请求的:

@Controller
public class HelloController {
private static final String PAGE_URL = "/hello";

@RequestMapping(value = PAGE_URL,method = RequestMethod.GET)
public String getHelloMessage(@RequestParam("name") String name, Model model){
    String str = (name == null) || name.equals("") ? "World" : name;
    model.addAttribute("name", str);
    return "hello";
}
}

这是位于 /WEB-INF/views/ 目录中的 View 类 (hello.html) Class project structure for HelloController application

【问题讨论】:

    标签: java spring spring-mvc servlets jstl


    【解决方案1】:

    错误消息不完整,但看起来您在运行时中缺少 jstl.jar。

    尝试将该依赖项添加到您的项目中。 http://mvnrepository.com/artifact/javax.servlet/jstl/1.2

    如果您在应用中部署 jstl.jar,请注意,大多数应用服务器都有此 jar 的版本。

    可以在这里找到更完整的答案:java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

    【讨论】:

    • 亲爱的弗朗索瓦,这真的很有帮助。这个问题现在解决了。但是现在出现了一个问题:“....在名称为'dispatcherServlet'的DispatcherServlet中找不到带有URI [/WEB-INF/views/hello.html]的HTTP请求的映射......”看起来没有映射到“hello.html”。但这很奇怪,因为我希望这段代码必须配置 DispatcherServlet 才能知道所有视图 (*.html): 'code'@Bean public InternalResourceViewResolver viewResolver() { .... } 我错了吗?
    • 如果您有新问题,请提出新问题,而不是更改现有且已回答的问题。
    • 对不起,我的错,我会关闭这个问题,因为它完全清楚。
    猜你喜欢
    • 2016-01-04
    • 2017-03-29
    • 1970-01-01
    • 2014-08-19
    • 2015-07-17
    • 2012-12-22
    • 2014-08-25
    相关资源
    最近更新 更多