【发布时间】:2020-03-31 07:26:30
【问题描述】:
最近在学习Spring Boot + thymeleaf,发现一个奇怪的错误。
register.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" th:href="@{/lib/bootstrap/css/bootstrap.min.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/lib/font-awesome/css/font-awesome.min.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/lib/select2/css/select2.min.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/lib/jquery.bxslider/jquery.bxslider.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/lib/owl.carousel/owl.carousel.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/lib/jquery-ui/jquery-ui.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/css/animate.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/css/reset.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/css/style.css}" />
<link rel="stylesheet" type="text/css" th:href="@{/css/responsive.css}" />
<title>Register - Kute shop</title>
</head>
<body class="category-page">
<!-- HEADER -->
<div id="header" class="header">
<!-- END MANIN HEADER -->
<div class="row">
<div id="main-menu" class="col-sm-9 main-menu">
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<i class="fa fa-bars"></i>
</button>
<a class="navbar-brand" href="#">MENU</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="category.html" class="dropdown-toggle" data-toggle="dropdown">Foods</a>
<ul class="mega_dropdown dropdown-menu" style="width: 830px;">
<li class="block-container col-sm-3">
<ul class="block">
<li class="link_container group_header">
<a href="#">Asian</a>
</li>
<li class="link_container">
<a href="#">Vietnamese Pho</a>
</li>
<li class="link_container">
<a href="#">Noodles</a>
</li>
<li class="link_container">
<a href="#">Seafood</a>
</li>
<li class="link_container group_header">
<a href="#">Sausages</a>
</li>
<li class="link_container">
<a href="#">Meat Dishes</a>
</li>
<li class="link_container">
<a href="#">Desserts</a>
</li>
<li class="link_container">
<a href="#">Tops</a>
</li>
<li class="link_container">
<a href="#">Tops</a>
</li>
</ul>
</li>
<li class="block-container col-sm-3">
<ul class="block">
<li class="link_container group_header">
<a href="#">European</a>
</li>
<li class="link_container">
<a href="#">Greek Potatoes</a>
</li>
<li class="link_container">
<a href="#">Famous Spaghetti</a>
</li>
<li class="link_container">
<a href="#">Famous Spaghetti</a>
</li>
<li class="link_container group_header">
<a href="#">Chicken</a>
</li>
<li class="link_container">
<a href="#">Italian Pizza</a>
</li>
<li class="link_container">
<a href="#">French Cakes</a>
</li>
<li class="link_container">
<a href="#">Tops</a>
</li>
<li class="link_container">
<a href="#">Tops</a>
</li>
</ul>
</li>
<li class="block-container col-sm-3">
<ul class="block">
<li class="link_container group_header">
<a href="#">FAST</a>
</li>
<li class="link_container">
<a href="#">Hamberger</a>
</li>
<li class="link_container">
<a href="#">Pizza</a>
</li>
<li class="link_container">
<a href="#">Noodles</a>
</li>
<li class="link_container group_header">
<a href="#">Sandwich</a>
</li>
<li class="link_container">
<a href="#">Salad</a>
</li>
<li class="link_container">
<a href="#">Paste</a>
</li>
<li class="link_container">
<a href="#">Tops</a>
</li>
<li class="link_container">
<a href="#">Tops</a>
</li>
</ul>
</li>
<li class="block-container col-sm-3">
<ul class="block">
<li class="img_container">
<img th:src="@{/data/banner-topmenu.jpg}" alt="Banner">
</li>
</ul>
</li>
</ul>
</li>
<li class="dropdown">
<a href="category.html" class="dropdown-toggle" data-toggle="dropdown">Digital</a>
<ul class="dropdown-menu container-fluid">
<li class="block-container">
<ul class="block">
<li class="link_container"><a href="#">Mobile</a></li>
<li class="link_container"><a href="#">Tablets</a></li>
<li class="link_container"><a href="#">Laptop</a></li>
<li class="link_container"><a href="#">Memory Cards</a></li>
<li class="link_container"><a href="#">Accessories</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="category.html">Furniture</a></li>
<li><a href="category.html">Jewelry</a></li>
<li class="dropdown">
<a href="category.html" class="dropdown-toggle" data-toggle="dropdown">Pages</a>
<ul class="mega_dropdown dropdown-menu" style="width: 830px;">
<li class="block-container col-sm-4">
<ul class="block">
<li class="link_container group_header">
<a href="#">Page</a>
</li>
<li class="link_container">
<a href="category.html">Category Left Sidebar</a>
</li>
<li class="link_container">
<a href="category2.html">Category Right Sidebar</a>
</li>
<li class="link_container">
<a href="detail.html">Product Left Sidebar</a>
</li>
<li class="link_container">
<a href="detail2.html">Product Full width</a>
</li>
<li class="link_container">
<a href="detail3.html">Product Right Sidebar</a>
</li>
</ul>
</li>
<li class="block-container col-sm-4">
<ul class="block">
<li class="link_container group_header">
<a href="#">Page</a>
</li>
<li class="link_container">
<a href="wishlist.html">Wishlist</a>
</li>
<li class="link_container">
<a href="compare.html">Compare</a>
</li>
<li class="link_container">
<a href="order.html">Order</a>
</li>
<li class="link_container">
<a href="checkout.html">Checkout</a>
</li>
<li class="link_container">
<a href="login.html">Login</a>
</li>
</ul>
</li>
<li class="block-container col-sm-4">
<ul class="block">
<li class="link_container group_header">
<a href="#">Page</a>
</li>
<li class="link_container">
<a href="blog.html">Blog</a>
</li>
<li class="link_container">
<a href="blog-detail.html">Blog Post</a>
</li>
<li class="link_container">
<a href="contact.html">Contact Us</a>
</li>
<li class="link_container">
<a href="about.html">About Us</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
</div>
</div>
</div>
<!-- end header -->
<!-- page wapper-->
<div class="columns-container">
<div class="container" id="columns">
<form action="#" method="post" role="form" th:action="@{/addNew}">
<div class="box-authentication">
<h3>Create an account</h3>
<p>Please enter your email address to create an account.</p>
<label for="emmail_register">Email address</label>
<input id="emmail_register" type="text" class="form-control">
<label for="password_register">Password</label>
<input id="password_register" type="password" class="form-control">
<p class="forgot-pass"><a href="#">Forgot your password?</a></p>
<button class="button"><i class="fa fa-lock"></i> Sign up</button>
</div>
</form>
</div>
</div>
<!-- ./page wapper-->
<!-- Footer -->
<a href="#" class="scroll_top" title="Scroll to Top" style="display: inline;">Scroll</a>
</body>
</html>
当我运行 SpringBoot 时,它显示以下错误:
org.thymeleaf.exceptions.TemplateProcessingException: Error during execution of processor 'org.thymeleaf.spring5.processor.SpringActionTagProcessor' (template: "register" - line 244, col 52)
at org.thymeleaf.processor.element.AbstractAttributeTagProcessor.doProcess(AbstractAttributeTagProcessor.java:117) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.processor.element.AbstractElementTagProcessor.process(AbstractElementTagProcessor.java:95) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.util.ProcessorConfigurationUtils$ElementTagProcessorWrapper.process(ProcessorConfigurationUtils.java:633) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.engine.ProcessorTemplateHandler.handleOpenElement(ProcessorTemplateHandler.java:1314) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.engine.TemplateHandlerAdapterMarkupHandler.handleOpenElementEnd(TemplateHandlerAdapterMarkupHandler.java:304) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler$InlineMarkupAdapterPreProcessorHandler.handleOpenElementEnd(InlinedOutputExpressionMarkupHandler.java:278) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.standard.inline.OutputExpressionInlinePreProcessorHandler.handleOpenElementEnd(OutputExpressionInlinePreProcessorHandler.java:186) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.thymeleaf.templateparser.markup.InlinedOutputExpressionMarkupHandler.handleOpenElementEnd(InlinedOutputExpressionMarkupHandler.java:124) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
at org.attoparser.HtmlElement.handleOpenElementEnd(HtmlElement.java:109) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.attoparser.HtmlMarkupHandler.handleOpenElementEnd(HtmlMarkupHandler.java:297) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.attoparser.MarkupEventProcessorHandler.handleOpenElementEnd(MarkupEventProcessorHandler.java:402) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.attoparser.ParsingElementMarkupUtil.parseOpenElement(ParsingElementMarkupUtil.java:159) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.attoparser.MarkupParser.parseBuffer(MarkupParser.java:710) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE]
at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:301) ~[attoparser-2.0.5.RELEASE.jar:2.0.5.RELEASE]
... 84 common frames omitted
第 244 行是带有th:action 的表单标签。但是,如果我删除div#header 中的任何一行或将li 标记转换为一行,它就会成功呈现。这真的很有趣。似乎 thymeleaf 只呈现比上述更短的 html。我的 Spring 版本是2.2.1,jdk 版本是1.8。可能是什么问题?
【问题讨论】:
-
这看起来像您的问题吗? youtrack.jetbrains.com/issue/IDEA-222139
-
@Kootli 我将 IntelliJ 用于我的 IDE,但我认为这不是它的错。
-
您可以在另一个面临相同问题的问题中查看我的答案:stackoverflow.com/a/67192363/4598590
标签: java spring-boot intellij-idea thymeleaf