programing

템플릿 "index"를 확인하는 동안 오류가 발생했습니다. 템플릿이 없거나 구성된 템플릿 해결 프로그램에서 액세스할 수 없습니다.

javamemo 2023. 3. 6. 20:37
반응형

템플릿 "index"를 확인하는 동안 오류가 발생했습니다. 템플릿이 없거나 구성된 템플릿 해결 프로그램에서 액세스할 수 없습니다.

이전에 이 질문을 한 적이 있지만, 저는 문제를 해결하지 못했고, 이상한 기능을 갖게 되었습니다.

내가 만약 내 것을 넣으면index.html다음과 같이 정적 디렉토리에 파일을 저장합니다.

여기에 이미지 설명 입력

브라우저에 다음 오류가 나타납니다.

여기에 이미지 설명 입력

그리고 내 콘솔:

[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 파일을 템플릿디렉토리로 이동하면 브라우저에 다음 오류가 나타납니다.

여기에 이미지 설명 입력

뷰 리졸버를 추가했습니다.

@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();
    }

}

Web Security Config.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.displaces를 표시합니다.

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

의 이름을 확인합니다.

템플릿

폴더. 템플릿이 아닌 템플릿이어야 합니다(s 제외).

index.html에 한다templates내가 알기로는.두 번째 시도는 맞는 것 같네요

있듯이, 「 」는 「 」입니다.index.html를 들어 세있는는 다음.meta는 실제로는 「」로 할 가 있습니다.head★★★★★★★★★★★★★★★★★★★★★★★★★★★

콘솔에 로그인과의 경합이 표시된다.을 해야 할것 같아요.index.html예를 들어 다음과 같습니다.

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

봄은 처음이라 한 시간 동안 이 문제를 해결하려고 노력했어요.

--->로 이동합니다.

다음을 추가합니다.

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

이 문제는 application.properties에서 다음 코드를 복사하여 해결할 수 있습니다.

spring.thymeleaf.enabled=false

이것은 나를 성공하게 만든다!

prefix: classpath:/templates/

사용하시는 어플리케이션.yml

이 문제가 발생하여 모든 것이 정상인 경우 IDE에서 캐시/재시작을 비활성화해 보십시오.이렇게 하면 대부분의 경우 문제가 해결됩니다.

이 오류는 대부분의 경우 닫힘 태그가 없기 때문에 발생합니다.또, 레거시 HTML 포메이트를 서포트하면서, 다음의 의존성에 의해서 이 문제를 해결할 수 있습니다.

코드 문자 집합="UTF-8"> 메타 태그는 닫히지 않습니다.

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

나에게 문제는 대소문자를 구분하는 것이었다.는 용 i i용었 i i i i i 。~{fragments/Base}~{fragments/base}은 ( ) 。base.html)

개발 환경은 Windows였지만 애플리케이션을 호스팅하는 서버는 Linux였기 때문에 Windows의 경로는 대소문자를 구분하지 않기 때문에 개발 중에는 이 문제가 발생하지 않았습니다.

템플릿 이름이 슬래시로 시작하는 경우에도 오류 메시지가 나타날 수 있습니다.

return "/index";

IDE에서 파일은 두 개의 슬래시가 있는 경로로 정상적으로 해결되었습니다.

getResource(templates//index.html)
 Delegating to parent classloader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@2399ee45
 --> Returning 'file:/Users/andreas/git/my-project/frontend/out/production/resources/templates//index.html'

템플릿이 항아리에 포장되어 있는 실제 시스템에서는 슬래시가 두 개 있는 해상도가 작동하지 않고 동일한 오류 메시지가 나타납니다.

✅ 선행 슬래시를 생략합니다.

return "index";

" " " spring.thymeleaf.mode=HTML5가 meapplication.properties를 했습니다.그것도 시도해 보세요.

도 맞닥뜨렸습니다.TemplateResolvererror, 뷰 오류 중 " "spring.thymeleaf.mode=HTML5 application.properties 9용으로 .STS 웹 사이트 9.

src/main/resources/templates 폴더에서 html 파일을 사용할 수 있는지 확인합니다.

@RestController도 추가해 보세요.이 문제는 같은 문제였습니다.@RestController @Controller를 둘 다 추가했습니다.찾아주세요.

예를 들어 (숫자를 문자열에 파싱하거나 그 반대)와 같은 예외가 있기 때문일 수 있습니다.

셀 값이 null인지 확인하거나 예외를 처리하여 참조하십시오.

베스트 샤히드

나는 이 문제를 디버깅하느라 2시간을 허비했다.

템플릿 파일을 올바른 위치(리소스/템플릿/)에 저장했는데도 동일한 오류가 계속 발생했습니다.

알고 보니 제 프로젝트에서 몇 가지 추가 패키지를 만들었기 때문입니다.예를 들어, 모든 컨트롤러 파일은 'controller' 패키지에 들어 있었습니다.

Spring Initializr에서 자동으로 생성된 파일에 대해서도 동일한 작업을 수행했습니다.

왜 이런 일이 일어나는지 정확히는 모르겠지만

근데 내가 움직였을 때ServletInitializer「」가 붙은 파일 및 「」가 붙은 파일.@SpringBootApplication프로젝트의 근본으로 돌아가서, 오류는 사라졌습니다!

저는 pom.xml에 포함시키면 예외가 발생합니다.pom.xml에서 삭제하면 문제가 해결됩니다.(솔직히 어떻게 그런 일이 일어났는지 모르겠어요)

<build>
    <resources>
        <resource>
           <directory>src/main/resources</directory>
           <targetPath>${project.build.outputDirectory}</targetPath>
           <includes>
               <include>application.properties</include>
           </includes>
        </resource>
    </resources>
</build>

제 경우 위의 제안과 같이 다른 모든 것은 정상이었지만, "템플릿이 존재하지 않거나 설정된 템플릿리졸바에서 접근할 수 없을 수 있습니다"라고 불평하고 있었습니다.내 프로젝트를 다른 샘플 프로젝트와 비교한 결과, 나는 내가 부족하다는 것을 알았다.

<configuration>
    <addResources>true</addResources>
</configuration>

봄부츠마븐으로내게는 효과가 있었다.내 플러그인 섹션은

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <addResources>true</addResources>
            </configuration>
        </plugin>
    </plugins>

그런데 왜 Tymeleaf를 작동시키기 위해 태그를 붙여야 했는지 모르겠습니다.

여기서 모든 솔루션을 시도해 봤지만, 어느 솔루션도 효과가 없는 것 같아서 반품 명세서를 조금 변경해 봤더니 효과가 있었어요!tymleaf가 템플릿파일을 인식하지 못하는 문제가 return 스테이트먼트에 ".html"을 추가하면 해결된 것 같습니다.

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

언급URL : https://stackoverflow.com/questions/31944355/error-resolving-template-index-template-might-not-exist-or-might-not-be-acces

반응형