在百里香中使用属性值:if condition

时间:2017-10-23 09:35:22

标签: spring-boot thymeleaf

基本上我在属性文件中有配置

data.enabled = true

我为此添加了一个POJO类

@Configuration
@PropertySource(value = {"classpath:dataconfig.properties"})
public class DataProperties {
    private Boolean enabled;
}

我想使用thymeleaf检查html标签上的enabled属性。

<li th:if="${DataProperties.getEnabled() == true}"><h3>Hello</h3></li>

1 个答案:

答案 0 :(得分:2)

首先,您应该将@ConfigurationProperties(prefix="data")添加到配置类中。

@Configuration
@PropertySource("classpath:dataconfig.properties")
@ConfigurationProperties(prefix="data")
public class DataProperties {
    private Boolean enabled;

这会激活您的变量直接绑定到属性值而不使用@Value注释。在您的属性文件中,您有data.enabled。这意味着您的前缀为data。所以你也必须设置它。

要直接在thymeleaf中使用bean,您需要使用特殊命令。在您的情况下,它应该是这样的:(see point 5 in the docs

<li th:if="${@dataProperties.getEnabled() == true}" ><h3>Hello</h3></li>

增加1:

要在控制器之类的其他spring bean中使用相同的属性,您必须自动装配DataProperties

@Controller
public class IndexController {

    @Autowired
    private DataProperties dataProperties;

    @GetMapping("/")
    public String index() {
        dataProperties.getEnabled();
        return "index";
    }

只是提到它在一个领域的autowire是不好的做法。但是您可以选择使用它或者在构造函数或setter上使用autowire。