模板解析期间发生错误模板:“类路径资源[templates / index.html]”

问题描述

我正在尝试打开html页面,但是每当尝试访问本地主机时,我都会遇到这些错误


Whitelabel错误页面 该应用程序没有针对/ error的显式映射,因此您将其视为后备。

2020年CEST星期二18:24:14 发生意外错误(类型=内部服务器错误,状态= 500)。 模板解析期间发生错误(模板:“类路径资源[templates / index.html]”) org.thymeleaf.exceptions.TemplateInputException:模板解析期间发生错误(模板:“类路径资源[templates / index.html]”) 在org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) 在org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) 在org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:666) 在org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1098) 在org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1072) 在org.thymeleaf.Spring5.view.ThymeleafView.renderFragment(ThymeleafView.java:362) 在org.thymeleaf.Spring5.view.ThymeleafView.render(ThymeleafView.java:189) 在org.springframework.web.servlet.dispatcherServlet.render(dispatcherServlet.java:1373) 在org.springframework.web.servlet.dispatcherServlet.processdispatchResult(dispatcherServlet.java:1118) 在org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:1057) 在org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:943) 在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) 在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:626) 在org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:733) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) 在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) 在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) 在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) 在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) 在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) 在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) 在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) 在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) 在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) 在org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) 在org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) 在org.apache.coyote.AbstractProtocol $ ConnectionHandler.process(AbstractProtocol.java:868) 在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1589) 在org.apache.tomcat.util.net.socketProcessorBase.run(SocketProcessorBase.java:49) 在java.base / java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) 在java.base / java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:630) 在org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61) 在java.base / java.lang.Thread.run(Thread.java:832) 由以下原因引起:org.attoparser.ParseException:执行处理器org.thymeleaf.Spring5.processor.SpringInputGeneralFieldTagProcessor时出错(模板:“ index”-第9行,col 36) 在org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393) 在org.attoparser.MarkupParser.parse(MarkupParser.java:257) 在org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) ...另外48个 由以下原因引起:org.thymeleaf.exceptions.TemplateProcessingException:处理器'org.thymeleaf.Spring5.processor.SpringInputGeneralFieldTagProcessor'执行期间发生错误(模板:“ index”-第9行,第36列) 在org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:117) 在org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) 在org.thymeleaf.util.ProcessorConfigurationUtils $ ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) 在org.thymeleaf.engine.ProcessorTemplateHandler.handleStandaloneElement(ProcessorTemplateHandler.java:918) 在org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleStandaloneElementEnd(TemplateHandlerAdapterMarkupHandler.java:260) 在org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler $ InlineMarkupAdapterPreProcessorHandler.handleStandaloneElementEnd(InlinedOutputExpressionMarkupHandler.java:256)处 在org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleStandaloneElementEnd(OutputExpressionInlinePreProcessorHandler.java:169) 在org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleStandaloneElementEnd(InlinedOutputExpressionMarkupHandler.java:104)处 在org.attoparser.HtmlElement.handleStandaloneElementEnd(HtmlElement.java:79) 在org.attoparser.HtmlMarkupHandler.handleStandaloneElementEnd(HtmlMarkupHandler.java:241) 在org.attoparser.MarkupEventProcessorHandler.handleStandaloneElementEnd(MarkupEventProcessorHandler.java:327) 在org.attoparser.ParsingElementMarkupUtil.parseStandaloneElement(ParsingElementMarkupUtil.java:96) 在org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:706) 在org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301) ...另外50 由以下原因引起:org.springframework.beans.NotReadablePropertyException:Bean类[com.example.demo.domain.User]的无效属性'fullName':Bean属性'fullName'不可读或具有无效的getter方法:返回类型是否为的getter匹配setter的参数类型? 在org.springframework.beans.AbstractnestablePropertyAccessor.getPropertyValue(AbstractnestablePropertyAccessor.java:622) 在org.springframework.beans.AbstractnestablePropertyAccessor.getPropertyValue(AbstractnestablePropertyAccessor.java:612) 在org.springframework.validation.AbstractPropertyBindingResult.getActualFieldValue(AbstractPropertyBindingResult.java:104) 在org.springframework.validation.AbstractBindingResult.getFieldValue(AbstractBindingResult.java:228) 在org.springframework.web.servlet.support.BindStatus。(BindStatus.java:129) 在org.springframework.web.servlet.support.RequestContext.getBindStatus(RequestContext.java:903) 在org.thymeleaf.Spring5.context.webmvc.SpringWebMvcThymeleafRequestContext.getBindStatus(SpringWebMvcThymeleafRequestContext.java:227) 在org.thymeleaf.Spring5.util.FieldUtils.getBindStatusFromParsedExpression(FieldUtils.java:306) 在org.thymeleaf.Spring5.util.FieldUtils.getBindStatus(FieldUtils.java:258) 在org.thymeleaf.Spring5.util.FieldUtils.getBindStatus(FieldUtils.java:227) 在org.thymeleaf.Spring5.processor.AbstractSpringFieldTagProcessor.doProcess(AbstractSpringFieldTagProcessor.java:174) 在org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:74) ...还有63个


我将附加涉及的文件


家庭控制器:

@Controller
public class HomeController {

    @RequestMapping("/")
    public String home(Model model) {
        model.addAttribute("formData",new User());
        return "index";
    }

    @RequestMapping(value = "/create",method = RequestMethod.POST)
    public String processFormData(User user) {
        return "results";
    }
}

用户域类:

public class User {
    private String fullName;
    private int age;
    private boolean employed;
    private String gender;


    public User() {}

    public User(String full_name,int age,boolean employed,String gender) {
        super();
        this.fullName = full_name;
        this.age = age;
        this.employed = employed;
        this.gender = gender;
    }

    // GETTER AND SETTERS HERE
}

index.html:

<!doctype html>
<html lang="en" xmlns:th="https://www.thymeleaf.org/">
<head>
    <Meta charset="UTF-8" />
    <title>Home page</title>
</head>
<body>
    <form action="/create" method="POST" th:object="${formData}">
        <p>Full name: <input type="text" th:field="${formData.fullName}" /></p>
        <p>Age: <input type="text" th:field="${formData.age}" /></p>
        <p>Employed: <input type="checkBox" th:field="${formData.employed}" th:value="true"/></p>
        <p>
            Gender: <br>
            Male <input type="radio" th:field="${formData.gender}" th:value="Male" />
            Female <input type="radio" th:field="${formData.gender}" th:value="Female" />
        </p>
        <p>
            <input type="submit" value="Submit"/>
            <input type="reset" value="Reset"/>
        </p>
    </form>
</body>
</html>

解决方法

Bean类[com.example.demo.domain.User]的无效属性'fullName':Bean属性'fullName'不可读或具有无效的getter方法

Thymeleaf只能通过getter访问对象的属性。另外,如果要将对象绑定与Thymeleaf一起使用,则还必须确保具有setter和默认构造函数。

通常,每当您与Thymeleaf一起使用时,为传递给百里香叶的所有对象定义所有的getter,setter和默认构造函数是一个好主意。

,

您应该将用户属性的可见性更改为公开。 大功告成。

来自萨尔瓦多的问候