Thymeleaf无法评估国际化表达

时间:2018-05-25 02:49:32

标签: java html thymeleaf

我正在尝试实现国际化,并且我有以下html标记。

var animalArray = ["Donkey","Horse","Zebra","Okapi"], var animalCountArray = [7,3,9,2]

生成html为

import UIKit
import CoreData

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
        let managedContext = appDelegate.persistentContainer.viewContext

        let animal1 = NSEntityDescription.insertNewObject(forEntityName: "ZooAnimals", into: managedContext)
        let animal2 = NSEntityDescription.insertNewObject(forEntityName: "ZooAnimals", into: managedContext)
        let animal3 = NSEntityDescription.insertNewObject(forEntityName: "ZooAnimals", into: managedContext)
        let animal4 = NSEntityDescription.insertNewObject(forEntityName: "ZooAnimals", into: managedContext)

        animal1.setValue("Donkey", forKey: "animal")
        animal1.setValue(7, forKey: "count")
        animal2.setValue("Horse", forKey: "animal")
        animal2.setValue(3, forKey: "count")
        animal3.setValue("Zebra", forKey: "animal")
        animal3.setValue(9, forKey: "count")
        animal4.setValue("Okapi", forKey: "animal")
        animal4.setValue(2, forKey: "count")

        do {
            try managedContext.save()
        } catch let error as NSError {
            print("Could not save. \(error), \(error.userInfo)")
        }
    }
}

<p th:text= "${your_amount(${it.vm.getAmount})}"></p> 正是我的国际化字符串。 理想情况下,结果应该是。

<p>Your Amount is: $</p>

Your Amount is: $种类没有被执行。我已检查<p>Your Amount is: $123.24</p> 内是否存在以下

的值
it.vm.getAmount

这给了我一个结果

getAmount

百老汇是否认为<p th:text="${it.vm.getAmount}"></p> 在呈现时是一个特殊角色,有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

这个表达式:

<p th:text= "${your_amount(${it.vm.getAmount})}"></p>

是无效的语法 - 出于多种原因。

  1. ${}表达式永远不会嵌套在其他${}表达式中 - 除非您正在进行预处理。
  2. 如果your_amount是字符串,则不能将其用作函数your_amount(...)
  3. it.vm.getAmount不应该工作 - 除非你确实已经命名了你的getter方法getGetAmount()。它应该是it.vm.amountit.vm.getAmount()
  4. 当我尝试你的表达时,我收到了这个错误:

    Method your_amount(java.lang.String) cannot be found on org.thymeleaf.spring4.expression.SPELContextMapWrapper

    如果您只想将不同的字符串附加在一起,那么您应该做的事情如下:

    <p th:text= "${your_amount + it.vm.getAmount}"></p>
    

    <p>
        <span th:text="${your_amount}"><span th:text="${it.vm.getAmount}">
    </p>
    

    <span th:text="|${your_amount}${it.vm.getAmount}|" />