如何从模型中调用getter传递给Thymeleaf参数?

时间:2016-10-05 04:32:04

标签: java spring spring-mvc thymeleaf

我将对象添加到ModelAndView

ModelAndView model = new ModelAndView("index");
User currentUser = getUser();
model.addObject("currentUser", currentUser);

用户模型:

public class User {
    private String msisdn;
    private double balance;
    private double trafficResidue;
    private Map<String, String> variables;

    public String getMsisdn() {
        return msisdn;
    }

    public void setMsisdn(String msisdn) {
        this.msisdn = msisdn;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    public double getTrafficResidue() {
        return trafficResidue;
    }

    public void setTrafficResidue(double trafficResidue) {
        this.trafficResidue = trafficResidue;
    }

    public Map<String, String> getVariables() {
        return variables;
    }

    public void setVariables(Map<String, String> variables) {
        this.variables = variables;
    }
}

我需要在Thymeleaf呼叫getter

我试过

<label th:text="${currentUser.getMsisdn()}"/>

但它不起作用。如何从模型中调用getter传递给Thymeleaf参数?

2 个答案:

答案 0 :(得分:4)

如果您有一个标准的getter方法(以Thymeleaf预期的格式),那么您可以提到objectName.fieldName而不是objectName.getFieldName(),尽管两者都可以。如果你的getter方法有一些非标准名称,那么objectName.fieldName将不起作用,你必须使用objectName.yourweirdGetterMethodName()。

在你的情况下,对于字段msisdn,你有一个标准的getter方法getMsisdn()。因此,<label th:text="${currentUser.msisdn}"/><label th:text="${currentUser.getMsisdn()}"/>都可以正常使用。

再次 <label th:text="${currentUser.msisdn}"/>工作得很好,你不必明确提到getter方法(因为它是一个标准的getter方法)。

不幸的是,这两个选项都不适合你。所以这基本上意味着,问题在其他地方。我怀疑你添加的对象对视图有什么影响。如果您可以发布控制器代码,我可以帮助您。

答案 1 :(得分:0)

如果您只是使用getter作为值,则直接使用该属性 &#34; $ {currentUser.msisdn}&#34; 或者,如果您想将一些逻辑添加到getter并使用它,您可以在这里参考:How to call object's method from Thymeleaf?