gpt4 book ai didi

java - Thymeleaf if 表达式不适用于主题参数值

转载 作者:行者123 更新时间:2023-11-30 01:56:31 25 4
gpt4 key购买 nike

我的应用程序中有一个主题解析器。有两个主题:深色和白色。

<p th:text="${param.theme}">

</p>

这将返回当前主题,深色或白色。然而,

<p th:if="${param.theme == 'white'}">
white theme
</p>

什么也不输出。

我想要这个来实现主题切换。如何让它发挥作用?

Java配置代码。

public class WebConfig  implements WebMvcConfigurer {

@Autowired
private ApplicationContext applicationContext;

@Bean
public SpringResourceTemplateResolver templateResolver() {

var templateResolver = new SpringResourceTemplateResolver();

templateResolver.setApplicationContext(applicationContext);
templateResolver.setPrefix("classpath:/templates/");
templateResolver.setSuffix(".html");

return templateResolver;
}

@Bean
public SpringTemplateEngine templateEngine() {

var templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
templateEngine.setEnableSpringELCompiler(true);

return templateEngine;
}

@Bean
public ViewResolver viewResolver() {

var resolver = new ThymeleafViewResolver();
var registry = new ViewResolverRegistry(null, applicationContext);

resolver.setTemplateEngine(templateEngine());
registry.viewResolver(resolver);

return resolver;
}

@Bean
public ThemeSource themeSource() {

var themeSource = new ResourceBundleThemeSource();
themeSource.setBasenamePrefix("themes/");
return themeSource;
}

@Bean
public ThemeResolver themeResolver(){

var resolver = new CookieThemeResolver();
resolver.setCookieMaxAge(604800);
resolver.setCookieName("mytheme");
resolver.setDefaultThemeName("dark");
return resolver;
}

@Override
public void addInterceptors(InterceptorRegistry registry) {

var themeChangeInterceptor = new ThemeChangeInterceptor();
themeChangeInterceptor.setParamName("theme");
registry.addInterceptor(themeChangeInterceptor);
}

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");
}

最佳答案

尝试将主题参数转换为字符串(使用 thymeleaf 表达式 #{} ),然后将其与您的主题名称进行比较

如下:

<p th:if="${#strings.toString(param.theme) == 'white'}">
white theme
</p>

关于java - Thymeleaf if 表达式不适用于主题参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54307272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com