thymeleaf 相关问题

Thymeleaf是一个XML / XHTML / HTML5模板引擎(可扩展到其他格式),可以在Web和非Web环境中工作。它更适合在Web应用程序的视图层提供XHTML / HTML5,它甚至可以在脱机环境中处理任何XML文件。它提供了一个可选模块,用于与Spring MVC集成,因此您可以在使用此技术的应用程序中将其用作JSP的完全替代,即使使用HTML5也是如此。

如何在 Thymeleaf 中使用枚举作为方法参数?

我正在尝试调用一个方法,该方法将枚举作为我的 Thymeleaf 模板中的参数。枚举非常简单: 公共枚举语言{ C, 爪哇, 点网 } 正在调用的方法...

回答 1 投票 0

如何使用 Thymeleaf 在 HTML5 日期时间本地输入上显示 ZonedDateTime?

如何使用 Thymeleaf 在 HTML5 日期时间本地输入上显示 ZonedDateTime? ExampleModel.datetime 能够使用 ZonedDateTimeConverter 从 HTML 日期时间本地输入进行转换,但无法显示...

回答 1 投票 0

Spring Security 的 Thymeleaf 授权不起作用[重复]

我在 Spring Boot 应用程序中使用 Spring Security,但 Thymeleaf 授权似乎无法正常工作。 我有 Thymeleaf 模板,代码如下: 我在 Spring Boot 应用程序中使用 Spring Security,但 Thymeleaf 授权似乎无法正常工作。 我有带有以下代码的 Thymeleaf 模板: <div class="container"> <div class="row" sec:authorize="isAuthenticated()"> <h2 style="color:green">User is Logged In</h2> <p sec:authentication="principal.username">username</p> </div> <div class="row" sec:authorize="!isAuthenticated()"> <h2 style="color:red">User is Logged Out</h2> </div> <div class="row" sec:authorize="hasRole('ROLE_SUPERUSER')"> <h2>This will only be displayed if authenticated user has role ROLE_SUPERUSER.</h2> </div> <div class="row" sec:authorize="hasRole('ROLE_ADMIN')"> <h2>This will only be displayed if authenticated user has role ROLE_ADMIN.</h2> </div> <div class="row" sec:authorize="hasRole('ROLE_USER')"> <h2>This will only be displayed if authenticated user has role ROLE_USER.</h2> </div> <div th:if="${#authorization.expression('hasRole(''ROLE_ADMIN'')')}"> This will only be displayed if authenticated user has role ROLE_ADMIN. </div> <div th:if="${#authorization.expr('hasRole(''ROLE_ADMIN'')')}"> This will only be displayed if authenticated user has role ROLE_ADMIN. </div> </div> 示例取自:https://github.com/thymeleaf/thymeleaf-extras-springsecurity 但是,显示的唯一内容是 sec:authorize="isAuthenticated()" 和 sec:authorize="!isAuthenticated()",并且无论用户的角色如何,授权始终被忽略。 我的百里香配置是: @Configuration public class ThymeleafConfig { @Bean public TemplateResolver defaultTemplateResolver() { TemplateResolver resolver = new TemplateResolver(); resolver.setResourceResolver(thymeleafResourceResolver()); resolver.setPrefix("classpath:/templates/"); resolver.setSuffix(".html"); resolver.setTemplateMode("HTML5"); resolver.setCharacterEncoding("UTF-8"); resolver.setCacheable(true); return resolver; } @Bean public SpringResourceResourceResolver thymeleafResourceResolver() { return new SpringResourceResourceResolver(); } @Bean public SpringTemplateEngine templateEngine(TemplateResolver templateResolver) { SpringTemplateEngine engine = new SpringTemplateEngine(); engine.setTemplateResolver(templateResolver); engine.addDialect(new SpringSecurityDialect()); engine.addDialect(new LayoutDialect()); return engine; } @Bean public ThymeleafViewResolver thymeleafViewResolver(SpringTemplateEngine templateEngine) { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setTemplateEngine(templateEngine); resolver.setCharacterEncoding("UTF-8"); resolver.setContentType("text/html"); resolver.setOrder(Ordered.LOWEST_PRECEDENCE - 5); return resolver; } } 我对 thymeleaf-extras-springsecurity4 使用以下依赖项: <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity4</artifactId> <version>2.1.3.RELEASE</version> </dependency> 版本 3.0.2.RELEASE 根本不起作用,并且 sec 命名空间总是被 Thymeleaf 忽略。 我的 Spring Boot 版本是 1.5.2.RELEASE。 可能是什么原因? 更新。 configure(HttpSecurity http)中的SecurityConfig方法如下所示: @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().ignoringAntMatchers("/h2-console").disable() .authorizeRequests() .antMatchers("/webjars/**", "/static/**", "/images/**", "/**/favicon.ico").permitAll() .antMatchers("/heat/**", "/power/**", "/water/**").permitAll() // start allowing h2-console .antMatchers("/h2-console/**").permitAll(); http.csrf().disable(); http.headers().frameOptions().disable() // end allowing h2-console .and().authorizeRequests().antMatchers("/info").permitAll() .and().authorizeRequests().antMatchers("/users/**").authenticated() .and().authorizeRequests().antMatchers("/users/**").hasAnyAuthority("ADMIN", "SUPERUSER") .and().formLogin() .loginPage("/login") .permitAll() .and() .logout() .permitAll() .deleteCookies("remove") .logoutUrl("/logout") .logoutSuccessUrl("/") .invalidateHttpSession(true) .and().exceptionHandling().accessDeniedPage("/access_denied"); } 并且来自 IndexController 的映射非常简单,它只是返回 login 模板: @RequestMapping("/login") public String loginForm() { return "login"; } 版本说明: 由于新的安全限制,以下内容在 Thymeleaf 3.1+ 中不起作用。 解决任务的另一种方法是使用此语法来检查角色: <div class="row" th:if="${#request.isUserInRole('SUPERUSER')}"> <h2>This will only be displayed if authenticated user has role ROLE_SUPERUSER.</h2> </div> 它不使用 sec 命名空间,实际上根本不需要 thymeleaf-extras-springsecurity4 依赖项来使用它。 经过多次尝试不同的配置,我找到了解决方法。在这种情况下,sec:authorize="hasAuthority('ADMIN')"属性起作用: <div class="row" sec:authorize="hasRole('ROLE_ADMIN')"> <div class="col-md-10 col-md-offset-2"> <h2>User Has Role Admin</h2> </div> </div> <div class="row" sec:authorize="hasAuthority('ADMIN')"> <div class="col-md-10 col-md-offset-2"> <h2>User Has Authority Admin</h2> </div> </div> 和 User Has Authority Admin 标题呈现在页面上。 仍然不知道为什么 sec:authorize="hasRole('ROLE_ADMIN')" 属性不起作用,因为 thymeleaf-extras-springsecurity GitHub 页面上建议将其作为示例: https://github.com/thymeleaf/thymeleaf-extras-springsecurity#using-the-attributes 希望这可以帮助某人,尽管问题仍然悬而未决。 要尝试的事情: 1) 用 @EnableWebMvc 注释您的配置。 2) 将 ROLE_ADMIN 替换为 ADMIN(其他也相应地)。 3)在您的控制器中,打印此内容以查看您当前的角色: Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Set<String> roles = authentication.getAuthorities().stream() .map(r -> r.getAuthority()).collect(Collectors.toSet()); System.out.println(roles); 如果这对您不起作用,也许可以尝试 getUserPrincipal() 中的 HttpServletRequest。 简短地说: 我包含了我的 MVC 配置,以便您可以尝试最新的 Thymeleaf 和 Spring Security 版本。那里有一些额外的配置,因此您可以删除与您的项目无关的内容。 @Configuration @EnableWebMvc public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configuration) { configuration.enable(); } @Bean public ThymeleafViewResolver viewResolver() { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setOrder(1); resolver.setCharacterEncoding(StandardCharsets.UTF_8.name()); resolver.setTemplateEngine(templateEngine()); return resolver; } @Bean public TemplateEngine templateEngine() { Set<ITemplateResolver> templateResolvers = new LinkedHashSet<>(1); templateResolvers.add(webTemplateResolver()); SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolvers(templateResolvers); Set<IDialect> dialects = new LinkedHashSet<>(2); dialects.add(new SpringSecurityDialect()); dialects.add(new Java8TimeDialect()); templateEngine.setAdditionalDialects(dialects); return templateEngine; } @Bean public ITemplateResolver webTemplateResolver() { SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); resolver.setPrefix("/WEB-INF/thymeleaf/"); resolver.setTemplateMode(TemplateMode.HTML); resolver.setCharacterEncoding(StandardCharsets.UTF_8.name()); resolver.setSuffix(".html"); resolver.setCacheable(false); resolver.setOrder(2); return resolver; } @Bean public ViewResolver tilesViewResolver() { UrlBasedViewResolver viewResolver = new UrlBasedViewResolver(); viewResolver.setViewClass(TilesView.class); viewResolver.setOrder(0); return viewResolver; } @Bean public TilesConfigurer tilesConfigurer() { TilesConfigurer configurer = new TilesConfigurer(); configurer.setDefinitions("/WEB-INF/**/views.xml"); return configurer; } @Bean public LocalValidatorFactoryBean validator() { return new LocalValidatorFactoryBean(); } @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/403"); registry.addViewController("/404"); registry.addViewController("/about"); //edited for brevity } @Bean public ReloadableResourceBundleMessageSource messageSource() { ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource(); source.setBasename("classpath:messages"); source.setDefaultEncoding(StandardCharsets.UTF_8.name()); return source; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(localeChangeInterceptor()); registry.addInterceptor(themeChangeInterceptor()); registry.addInterceptor(deviceResolverHandlerInterceptor()); super.addInterceptors(registry); } @Bean public HandlerInterceptor localeChangeInterceptor() { LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor(); interceptor.setParamName("lang"); return interceptor; } @Bean public HandlerInterceptor themeChangeInterceptor() { ThemeChangeInterceptor interceptor = new ThemeChangeInterceptor(); interceptor.setParamName("theme"); return interceptor; } @Bean public ResourceBundleThemeSource themeSource() { ResourceBundleThemeSource themeSource = new ResourceBundleThemeSource(); themeSource.setBasenamePrefix("theme-"); return themeSource; } @Bean public PersistedThemeResolver themeResolver() { PersistedThemeResolver resolver = new PersistedThemeResolver(); resolver.setDefaultThemeName("default"); return resolver; } @Bean public HandlerInterceptor deviceResolverHandlerInterceptor() { return new DeviceResolverHandlerInterceptor(); } @Bean public CookieLocaleResolver localeResolver() { CookieLocaleResolver resolver = new CookieLocaleResolver(); resolver.setDefaultLocale(Locale.US); return resolver; } //removed custom bean declaration @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { argumentResolvers.add(new ServletWebArgumentResolverAdapter(new DeviceWebArgumentResolver())); super.addArgumentResolvers(argumentResolvers); } @Bean public Executor taskExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(100); executor.initialize(); return executor; } } 工作 pom 摘录: <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> <version>3.0.2.RELEASE</version> <exclusions> <exclusion> <groupId>javassist</groupId> <artifactId>javassist</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring4</artifactId> <version>3.0.2.RELEASE</version> </dependency> <dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-springsecurity4</artifactId> <version>3.0.0.RELEASE</version> </dependency>

回答 3 投票 0

通过网络上传/下载文件夹

嘿,我目前正在学习一般开发, 我目前有一个带有 thymeleaf 的 springboot 项目,我尝试使用 AdminLTE 模板(简单表)以不同的方式显示上传的文件

回答 1 投票 0

无法导入js文件或用Thymeleaf显示图像

所以我正在使用 Thymeleaf 构建一个 Spring Boot 项目,文件结构如下: 源代码 |_main |_ java |_ 资源 |_ 静态 |_ 图像 ...

回答 1 投票 0

Spring Boot中的ThymeLeaf找不到模板位置:classpath:/templates/

我想配置一个简单的控制器: @配置 公共类 Config 实现 WebMvcConfigurer { @Autowired 私有最终ApplicationContext applicationContext; 公共配置(

回答 1 投票 0

在 thymeleaf 中设置 th:field 属性正在替换 name 属性

我有一个表格,我需要在其中显示许多问题和多个答案。我将 Spring Boot 与 Thymeleaf 结合使用,并循环显示问题标签和多个单选按钮的列表

回答 2 投票 0

无法发布包含多个(超过 256 个)值的表单

我正在使用 Spring Boot 1.2.2 和 Thymeleaf。 我的问题是我尝试在表单中发布一长串项目(一些标签,一个复选框),该表单无法执行我列表中的这么多项目。 (我测试过小...

回答 2 投票 0

如果来自片段,如何向 thymeleaf head 标签添加附加内容?

在 django 中我可以这样做: {% 块内容 %} (....) ---------> 部分模板中的内容位于此处。 {% 末端嵌段 %} (....) ---------> 我可以给她添加额外的东西...

回答 2 投票 0

如何从其他变量设置 thymeleaf th:field 值

我有一个简单的文本输入字段,我必须在其中设置一个对象的默认值并将其最终值保存在另一个对象中。以下代码不起作用。 我有一个简单的文本输入字段,我必须在其中设置一个对象的默认值并将其最终值保存在另一个对象中。以下代码不起作用。 <div th:object="${form}"> <input class="form-control" type="text" th:value="${client.name}" //this line is ignored th:field="*{clientName}"/> </div> form是DTO对象,client是来自数据库的实体对象。 解决这种情况的正确方法是什么? 不工作我的意思是 - 假设初始值为 client.name="Foo" 和 form.clientName=null。 我需要输入字段显示值为“Foo”,并且在表单提交后 form.clientName 值变为“Foo”。但输入字段什么都不显示,提交时 form.clientName 值仍然为 null; 如果有人感兴趣,请使用以下结构解决此问题(在另一个问题中找到答案)。 th:attr="value = ${client.name}" 你可以采用这个方法。 不要使用 th:field,而是使用 html id 和 name。使用 th:value 设置值 <input class="form-control" type="text" th:value="${client.name}" id="clientName" name="clientName" /> 希望这对你有帮助 正确的做法是使用预处理 例如 th:field="*{__${myVar}__}" 如果您不必返回页面并保留表单的值,您可以这样做: <form method="post" th:action="@{''}" th:object="${form}"> <input class="form-control" type="text" th:field="${client.name}"/> 这是某种魔法: 它将设置值 = client.name 它将发送回表单中的值,作为“名称”字段。因此,您必须将表单字段“clientName”更改为“name” 如果您关心保留表单的输入值,例如页面上出现用户输入错误的背面,那么您必须这样做: <form method="post" th:action="@{''}" th:object="${form}"> <input class="form-control" type="text" th:name="name" th:value="${form.name != null} ? ${form.name} : ${client.name}"/> 这意味着: 表单字段名称为“name” 如果表单存在,则从表单中获取该值,否则从客户端 bean 获取。它将首先到达的页面与初始值相匹配,如果有错误,则表单输入值。 无需将客户端 bean 映射到表单 bean。 它之所以有效,是因为一旦您提交了表单,该值就不是 null 而是“”(空) 好吧,如果我正确理解了这个问题,那么您正在尝试为变量分配一个预定值,然后在 Thymeleaf 渲染该变量时将该变量填充到 html 表单中。如果这就是您所问的问题,我也已经为此苦苦挣扎了几天,在阅读您的帖子后才找到答案,并认为我会分享。 我正在做的事情(希望这对某人有帮助)是尝试自动为我的博客文章的 id 分配一个值,以便当用户提交它时,博客文章会自动获取我想要分配的 ID。 *** 我遇到的问题*** 当我像这样分配 id 变量 { th:field="*{id}" } 时,表单输入框中的输出始终为“0”。所以我尝试了各种不同的方法来解决这个问题,比如添加一个 th:value 和一个 th:name,这总是导致大的“0”。 所以,经过大量的努力,并在论坛中进行搜索后,我发现了这个小小的快乐。 https://frontbackend.com/thymeleaf/hidden-inputs-in-thymeleaf 虽然它没有解决我的具体问题,但答案就在那里。我不会让你自己读它,因为我讨厌那样。 **** 答案*** {HTML 表单} <input class="form-control" type="text" id="blog-id" th:field="*{id}"> {在控制器中} @GetMapping(“/”) 公共字符串显示(模型模型){ // Create the object first BlogPost blogPost = new BlogPost(); // Then add assign the value to object blogPost.setId( Value You Want To Add ); // Then send the object that you added the id to as the attribute model.addAttribute("blogPost", blogPost); return "postBlog"; } *** 结论*** 我将代码缩减为您需要看到的内容(在所有讨厌者开始之前)。这是我的解决方案,并且效果完美。不,我们都知道如何解决这个问题 干杯! Java埃迪 因此,您需要做的是将 th:field 替换为 th:name 并添加 th:value,th:value 将具有您要传递的变量的值。 <div class="col-auto"> <input type="text" th:value="${client.name}" th:name="clientName" class="form control"> </div> <form method="post" th:action="@{'/details-view/'+ ${id}}"> <fieldset> <div th:each="params: ${form.getHtmlNameType()}"> <label> <span th:text="${params[0]}"></span> <input th:field="${__${'form.'+params[1]}__}" th:name="${params[1]}" th:type="${params[2]}" > </label> </div> <input th:type="'hidden'" th:value="${originalReferer}" name="originalReferer" > </fieldset> <button type="post" >Save</button> </form> 有 2 种可能的解决方案: 1)你可以通过javascript在视图中设置它...(不推荐) <input class="form-control" type="text" id="tbFormControll" th:field="*{clientName}"/> <script type="text/javascript"> document.getElementById("tbFormControll").value = "default"; </script> 2)或者更好的解决方案是在模型中设置值,您可以通过控制器在 GET 操作中将其附加到视图。您还可以更改控制器中的值,只需从 $client.name 创建一个 Java 对象并调用 setClientName 即可。 public class FormControllModel { ... private String clientName = "default"; public String getClientName () { return clientName; } public void setClientName (String value) { clientName = value; } ... } 希望有帮助。

回答 7 投票 0

页面未加载

我有一个springboot应用程序。我对百里香依赖。有以下控制器类: @控制器 公共类 OSController { @GetMapping("/搜索") 公共字符串 getSear...

回答 1 投票 0

如何将 CSS 与 ThymeLeaf 模板分离

我在尝试将 CSS 分离到它自己的文件中时遇到问题。现在我把它放在 html 文件中了。请帮我 我尝试创建 CSS 文件并将其链接到 HTML 并期望可以工作,但它没有......

回答 1 投票 0

在 Thymeleaf 片段中将数组作为参数传递

是否可以将数组传递给片段,如下所示: 并像这样迭代片段: 是否可以将数组传递给这样的片段: <div th:replace="fragments :: test_fragment( {'one', 'two', 'three'} )"></div> 并像这样迭代片段: <div th:fragment="test_fragment(numberArray)"> <span th:each="number : ${numberArray}" th:text="${number}"></span> </div> 作为奖励,多维数组也可能吗? 我在 Spring Boot 2.0 项目中使用 Thymeleaf。 是的,这是可能的。下面的代码应该可以解决问题。唯一的区别是在数组外部添加了 ${}。 <div th:replace="fragments :: test_fragment(${ {'one', 'two', 'three'} })"></div> 我找到了两种方法:片段参数和 th:with。 片段参数数组: <div th:replace="~{fragments :: test_fragment(arrayX = ${ {'a', 'b'} }) }"></div> Frag参数数组多维: <div th:replace="~{fragments :: test_fragment(arrayX = ${ {{'a1','a2'},{'b1','b2'}} } ) }"></div> 第 :带有数组: <div th:insert="~{fragments :: test_fragment}" th:with="arrayX=${ {'a','b'} }"></div> th:具有多维数组: <div th:insert="~{fragments :: test_fragment}" th:with="arrayX=${ {{'a1','a2'},{'b1','b2'}} }"></div> 请注意,当我使用 th:with 时,我使用了 th:insert。这是因为 th:replace 会替换 div 行,从而替换 th:with,这会导致 arrayX 不可用。 接受答案的替代方法: <div th:replace="fragments :: test_fragment('one,two,three')"></div> 并迭代如下: <div th:fragment="test_fragment(numberArray)"> <span th:each="number : ${#strings.arraySplit(numberArray, ',')}" th:text="${number}"></span> </div> 有助于避免某些 IDE 发出警告,这些 IDE 抱怨括号中的 ${} 项中出现逗号 (,)。 好吧,这又在我的谷歌帐户下再次发生了,这是一次臭名昭著的垃圾黑客攻击。从上次我经历过这样可疑的事情开始,一位女性向公众展示,有时她看起来不是她自己,欺骗可能出现的东西某物就是某物。[ 块引用 ] 1. List item 列出项目

回答 4 投票 0

在我的 Spring MVC Java 项目中使用 Thymeleaf 时出现 500 错误

我在使用 Spring MVC 和 Thymeleaf 处理 Java 项目时遇到了问题。每次我尝试加载页面(尤其是index.html)时,都会遇到 500 内部服务器错误。错误提示...

回答 1 投票 0

Thymeleaf 在 HTML 代码中插入文本

我想在 HTML 代码中插入一个属性。 我尝试了这个,但它不起作用: ... 我想你知道我的意思。属性 var 应该是...

回答 3 投票 0

表单提交thymleaf和Spring boot后如何保持在同一页面?

大家好,我有一个关于标题中提到的内容的问题。是否可以留在同一页面上并提交。我发现了一些 javascript 的东西,但它对我不起作用,因为我

回答 3 投票 0

计算 SpringEL 表达式时出现异常:“#session.removeAttribute('message') in thymeleaf”

我正在尝试从我的 html 文件中删除这样的视图: 我正在尝试从我的 html 文件中删除这样的视图: <div th:if="${session.message}" th:classappend="${session.message.type}" class="alert" role="alert"> <p class = "text-center " th:text="${session.message.content}"></p> <th:block th:text="${#session.removeAttribute('message')}"></th:block> </div> 但是它抛出错误 Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression: "#session.removeAttribute('message')" (template: "signup" - line 19, col 43) at org.attoparser.MarkupParser.parseDocument(MarkupParser.java:393) at org.attoparser.MarkupParser.parse(MarkupParser.java:257) at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:230) ... 48 more 这是我的控制器代码... User addedUser = this.userRepository.save(user); model.addAttribute("user", new User()); session.setAttribute("message", new Message("Successfully Register", "alert-success")); return "signup"; } catch (Exception e) { e.printStackTrace(); model.addAttribute("user", user); session.setAttribute("message", new Message("Server Error !!" + e.getMessage(), "alert-danger")); return "signup"; } 任何人都可以帮我解决这个问题吗...? 尝试从会话中删除属性但无法执行此操作... 此方法已不再使用 您必须创建一个实用程序 bean 并创建一个会话删除方法,然后在 thymeleaf 中使用该方法来删除属性 班级: package com.Contact.config; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import jakarta.servlet.http.HttpSession; @Component public class sessionUtilityBean { @Bean public void removeMessageFromSession() { try { System.out.println("removing message form session "); HttpSession session = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest().getSession(); session.removeAttribute("message"); } catch (Exception e) { e.printStackTrace(); } } } 然后使用thymeleaf中的方法: <div th:if="${session.message}" th:classappend="${session.message.type}" class="alert " role="alert"> <p th:text="${session.message.content}"></p> <th:block th:text="${@sessionUtilityBean.removeMessageFromSession()}"></th:block> </div>

回答 1 投票 0

Spring Boot + Thymeleaf = 尝试渲染index.html时出现“Whitelabel错误页面”

我正在尝试做简单的 Spring MVC 库你知道为什么我的视图有问题吗?当我在控制器中使用主页方法时,它应该显示index.html,但我只得到 Whitelabel 错误...

回答 2 投票 0

Spring Boot 和 Thymeleaf 问题 - 模型特定查询

我是 Spring Boot 和 Thymeleaf 的初学者,我有一个问题,如果有经验丰富的开发人员可以帮助我,我将不胜感激!我有一个 EmployeeController -> EmployeeService ->

回答 1 投票 0

Thymeleaf 布局方言抛出 ClassNotFoundException nz.net.ultraq.thymeleaf.layoutdialect.LayoutDialect

我正在尝试将 thymeleaf 方言布局添加到新项目中,并且在配置它时,如文档(https://ultraq.github.io/thymeleaf-layout-dialect/getting-started/)中所述,它会抛出一个国家教育局: 20...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.