我有一个百里叶html
页面,显示来自数据库@Entity
的所有行。
问题:实体有一个复杂的字段映射到一个休眠的AttributeConverter
。当我想在html中将字段显示为String
时,我必须调用该转换器将复杂字段转换为字符串表示形式,如:
<td th:text="${{T(org.exmaple.domain.utils.AddressConverter).convertToString(row?.address)}}" />
与资料来源:
//assume I have the address only in this format
public class AddressConverter<Address, String> {
public String convertToString(Address address) {
if (address == null) return null;
return address.getZip() + " " + address.getTown();
}
}
问题:如何优化thymelef中的这些实用程序导入?我在找一些简单的东西,比如:
<td th:text="${{addressUtil.convertToString(row?.address)}}" />
让我们从您的需求开始回溯。以下是您希望在thyymleaf模板中包含的内容…
<td th:text="${addressConverter.convertToString(row?.address)}" />
要像这样调用addressConverter
的函数convertToString
,您需要在模型中拥有可用的对象。基本上在你的控制器中有一个静态变量。
private static final AddressConverter addressConverter = new AddressConverter();
添加到模型后…
model.addAttribute("addressConverter", addressConverter);
我刚刚发现可以简单地使用@
参数访问spring bean,如:
<div th:text="${@addressConverter.convertToString()}">...</div>
当然这里假定它不是一个静态实用程序。
如果有人知道如何更好地将静态实用程序暴露给thymleaf,请回答。