2015-08-11 6 views
10

Questa domanda è stata posta prima ma non ho risolto il mio problema e ottengo alcune funzionalità strane.Errore durante la risoluzione del modello "index", il modello potrebbe non esistere o non essere accessibile da nessuno dei Template Resolver configurati

Se metto il mio file index.html nella directory statica in questo modo:

enter image description here

ottengo il seguente errore nel mio browser:

enter image description here

E nella mia console :

[THYMELEAF][http-nio-8080-exec-3] Exception processing template "login": 
Exception parsing document: template="login", line 6 - column 3 
2015-08-11 16:09:07.922 ERROR 5756 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/]. 
[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] 
in context with path [] threw exception [Request processing failed; nested 
exception is org.thymeleaf.exceptions.TemplateInputException: Exception 
parsing document: template="login", line 6 - column 3] with root cause 

org.xml.sax.SAXParseException: The element type "meta" must be terminated by 
the matching end-tag "</meta>". 

Tuttavia, se muovo il file index.html nella directory dei modelli ottengo il seguente errore nel mio browser: enter image description here

enter image description here

Ho aggiunto la mia vista resolver:

@Controller 
@EnableWebMvc 
public class WebController extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/index").setViewName("index"); 
     registry.addViewController("/results").setViewName("results"); 
     registry.addViewController("/login").setViewName("login"); 
     registry.addViewController("/form").setViewName("form"); 
    } 

    @RequestMapping(value="/", method = RequestMethod.GET) 
    public String getHomePage(){ 
     return "index"; 
    } 

    @RequestMapping(value="/form", method=RequestMethod.GET) 
    public String showForm(Person person) { 
     return "form"; 
    } 

    @RequestMapping(value="/form", method=RequestMethod.POST) 
    public String checkPersonInfo(@Valid Person person, BindingResult bindingResult) { 

     if (bindingResult.hasErrors()) { 
      return "form"; 
     } 
     return "redirect:/results"; 
    } 

    @Bean 
    public ViewResolver getViewResolver() { 
     InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
     resolver.setPrefix("templates/"); 
     //resolver.setSuffix(".html"); 
     return resolver; 
    } 

    @Override 
    public void configureDefaultServletHandling(
      DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 

} 

WebSecurityConfig. java

@Configuration 
@EnableWebMvcSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
       .authorizeRequests() 
       .antMatchers("/", "/index").permitAll() 
       .anyRequest().authenticated() 
       .and() 
       .formLogin() 
       .loginPage("/login") 
       .permitAll() 
       .and() 
       .logout() 
       .permitAll(); 
    } 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth 
       .inMemoryAuthentication() 
       .withUser("user").password("password").roles("USER"); 
    } 
} 

index.html

<!DOCTYPE html> 
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"> 
<meta> 
    <meta> charset="UTF-8"> 
    <title></title> 
</head> 
<body> 

<h1>Welcome</h1> 

<a href="../../login.html"><span>Click here to move to the next page</span></a> 

</body> 

</html> 

A questo punto non so cosa sta succedendo. Qualcuno mi può dare qualche consiglio?

------ AGGIORNAMENTO --------

ho perso un errore di battitura nel index.html, ma ancora sto ottenendo gli stessi errori

<!DOCTYPE html> 
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta> charset="UTF-8"> 
    <title></title> 
</head> 
<body> 

<h1>Welcome</h1> 

<a href="../../login.html"><span>Click here to move to the next page</span></a> 

</body> 

</html> 

risposta

5

Nella console si sta dicendo che è un conflitto con il login. Penso che dovresti dichiararlo anche nell'indice.html thymeleaf. Qualcosa di simile:

<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:th="http://www.thymeleaf.org" 
    xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3" 
    xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> 

<head> 
<meta charset="utf-8" /> 
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
<title>k</title> 
</head> 
6

index.html dovrebbe essere dentro templates, come so. Quindi, il tuo secondo tentativo sembra corretto.

Ma, come dice il messaggio di errore, index.html sembra avere alcuni errori. Per esempio. nella terza riga, il tag meta dovrebbe essere in realtà il tag head, penso.

+0

vedere l'aggiornamento. Ho risolto, ma sto ancora ricevendo lo stesso errore. Il file index.html si trova attualmente nella directory dei modelli. – Drew1208

+0

Nella quarta riga, il meta tag sembra pre-chiuso. – Sanjay

+0

Sì, il tuo metatag è incasinato: charset = "UTF-8"> –

0

Controllare il nome delle

modelli

cartella. dovrebbe essere modelli non template (senza s).