2016-08-15 27 views
-1

我在Spring開發中很新。請諮詢我在我的迷你項目中錯過的內容。在main.Main類中通過註釋定義的Spring配置(參見下文)。 應用開始succesefull,與消息 「... RequestMappingHandlerMapping:映射 」{[/你好],方法= [GET]} ...「Spring Confit問題:將視圖映射到控制器錯誤(NoClassDefFoundError:javax/servlet/jsp/jstl/core/Config)

但是當我tryed打開http://localhost:8080/hello?name=MyUserName頁,我收到錯誤消息:」 ... org.springframework.web.util.NestedServletException:處理程序處理失敗;嵌套異常是java.lang.NoClassDefFoundError:javax/servlet/jsp/jstl/core/Config ...「

對我來說,我沒有完成配置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 
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"; 
} 
} 

這是View類(hello.html的)上文在/ WEB-INF/views /目錄中刪除 Class project structure for HelloController application

回答

0

錯誤消息不完整,但看起來您在運行時缺少jstl.jar。

嘗試將該依賴項添加到您的項目中。 http://mvnrepository.com/artifact/javax.servlet/jstl/1.2

如果您在您的應用程序中部署jstl.jar時要小心,大多數應用程序服務器都有該jar的版本。

一個更完整的答案可以在這裏找到:java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

+0

尊敬的弗朗索瓦,這真的很有幫助。現在解決了這個問題。但是現在出現了一些問題:「....在DispatcherServlet中使用URI [/WEB-INF/views/hello.html]找不到名爲'dispatcherServlet'的HTTP請求的映射...」看起來沒有映射到「hello.html」。但是這很奇怪,因爲我期望這段代碼必須配置DispatcherServlet來知道所有視圖(* .html):'code'@ Bean public InternalResourceViewResolver viewResolver(){ .... }我錯了嗎? – vzateychuk

+0

如果您有新問題,請提出新問題,而不是更改現有的已回答問題。 – BalusC

+0

對不起,我的錯,我完全清楚這個問題。 – vzateychuk