【问题标题】:How can I call getters from model passed to Thymeleaf like parameter?如何调用模型中的 getter 传递给 Thymeleaf 之类的参数?
【发布时间】:2017-02-13 09:32:46
【问题描述】:

我将对象添加到 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 之类的参数?

【问题讨论】:

  • 发布返回视图页面的控制器代码。在你的 POJO 中实现toString(),看看th:text="${currentUser}" 打印了什么?如果它包含属性msisdn,您应该能够访问它。

标签: java spring spring-mvc thymeleaf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    在您的情况下,对于字段 msisdn,您有一个标准的 getter 方法 getMsisdn()。所以,&lt;label th:text="${currentUser.msisdn}"/&gt;&lt;label th:text="${currentUser.getMsisdn()}"/&gt; 都应该适合你。

    再次, &lt;label th:text="${currentUser.msisdn}"/&gt; 可以正常工作,您不必明确提及 getter 方法(因为它是标准的 getter 方法)。

    很遗憾,这两个选项都不适合您。所以这基本上意味着,问题出在其他地方。我怀疑您添加到视图中的对象。如果您可以发布控制器代码,我可以帮助您。

    【讨论】:

    • 无法解析 'msisdn' less... (Ctrl+F1) 验证未解析的引用和无效的表达式
    • 它工作。但我的 IntellijIDEA 强调了这个变量,但它有效
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2013-09-06
    • 2020-07-22
    • 1970-01-01
    相关资源
    最近更新 更多