web-dev-qa-db-ja.com

テンプレート「インデックス」の解決中にエラーが発生しました。テンプレートが存在しないか、設定されたテンプレートリゾルバーのいずれかからアクセスできない可能性があります

この質問は以前に尋ねられましたが、問題を解決できず、奇妙な機能を取得しました。

Index.htmlファイルを静的ディレクトリに次のように配置すると:

enter image description here

ブラウザに次のエラーが表示されます。

enter image description here

そして、私のコンソールで:

[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>".

ただし、index.htmlファイルをテンプレートディレクトリに移動すると、ブラウザに次のエラーが表示されます。 enter image description here

enter image description here

ビューリゾルバを追加しました。

@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>

この時点では、何が起こっているのかわかりません。誰かアドバイスをいただけますか?

- - - 更新 - - - -

Index.htmlのタイプミスを見逃しましたが、まだ同じエラーが表示されます

<!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>
21
Drew1208

コンソールで、ログインと競合していることがわかります。 index.html thymeleafでも宣言する必要があると思います。何かのようなもの:

    <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>
15
David_Garcia

私が知っているように、index.htmltemplatesの中になければなりません。したがって、2回目の試行は正しいように見えます。

ただし、エラーメッセージに示されているように、index.htmlにはエラーがあるように見えます。例えば。 3行目のmetaタグは、実際にはheadタグであるはずです。

15
Sanjay

の名前を確認してください

テンプレート

フォルダ。テンプレート(sなし)ではなくテンプレートにする必要があります。

9
Mohit Singh

このエラーは、終了タグが欠落しているために、ほとんどの場合発生します。さらに、次の依存関係を使用して、レガシーHTML形式をサポートしながらこの問題を解決できます。

コードのcharset = "UTF-8">のように、ここではメタタグを閉じません。

<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>                                 
</dependency>
1
Muhammad

この問題に直面していて、すべてが正常に見える場合は、IDEからキャッシュを無効化/再起動してみてください。これにより、ほとんどの場合に問題が解決します。

1
Deni Simon

(NUMERICを文字列に解析する、またはその逆)のようないくつかの例外が原因である可能性があります。

セルの値がnullであることを確認するか、例外を処理して確認してください。

ベスト、シャヒード

私にとって、問題は大文字と小文字の区別が原因でした。 ~{fragments/Base}の代わりに~{fragments/base}を使用していました(ファイルの名前はbase.htmlでした)

私の開発環境はWindowsでしたが、アプリケーションをホストするサーバーはLinuxでしたので、Windowsのパスでは大文字と小文字が区別されないため、開発中にこの問題は発生しませんでした。

0
tanneraphid34