使用Thymeleaf在Spring MVC中显示模型对象

vde*_*ris 0 spring spring-mvc thymeleaf

首先,我定义了一个简单的POJO如下:

public class MyDesc {

    private String desc;

    public MyDesc(String desc) {
        setDesc(desc);
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

}
Run Code Online (Sandbox Code Playgroud)

然后,我通过实例MyDescSpring MVC的 模型对象:

@Bean
public MyDesc myDesc() {
    return new MyDesc("Holla!");
}

@RequestMapping(value="/", method = RequestMethod.GET)
public String home(Model model) {
    model.addAttribute("my-desc", myDesc());
    return "pages/home";
}
Run Code Online (Sandbox Code Playgroud)

现在,我想通过使用Thymeleaf作为模板引擎将内容显示到HTML页面中.

<div th:text="${my-desc.desc}">Desc placeholder</div> 
Run Code Online (Sandbox Code Playgroud)

但是在运行时发生错误:

Property or field 'desc' cannot be found on null 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Bij*_*men 5

可能因为-是百里香叶的有效算术表达式.所以在这里都mydesc可能变得视为变量,它们不是.尝试将模型变量更改为myDesc,它应该工作.

然而,有一个更广泛的问题,你已经将你的myDesc方法标记为@Bean,这里似乎没有必要,有什么理由去做吗?