java如何在OpenXava中从操作(在运行时以编程方式)更改属性的标签?
OpenXava中的标签在i18n文件中指定。但是,如果我需要在运行时根据一些逻辑更改标签,例如从一个动作更改标签,该怎么办呢
假设我有一个实体有一个盈利财产,但如果财产价值为负,我想把标签从“利润”改为“亏损”。与此操作代码类似:
public void execute() throws Exception {
// ...
BigDecimal profit = (BigDecimal) getView().getValue("profit");
if (profit.compareTo(BigDecimal.ZERO) < 0) {
// Here I want to change the label of profit from "Profit" to "Loss"
}
}
# 1 楼答案
View类有一个setLabelId()方法来更改属性的标签。虽然它从i18n标签文件接收标签id,但如果发送的标签不是i18n文件上的键,标签id会按字面显示,也可以在''之间发送标签,然后它总是按字面显示。也就是说,你可以在行动中使用:
然后myProperty的标签将是“This is my property”。虽然使用i18n文件中的id而不是标签本身是更好的做法,但也就是说,您可以编写以下代码:
在标签i18n文件中添加:
因此,您可以这样编写代码: