Tapestry - 将方法应用于tml循环中的值

时间:2016-07-08 13:23:06

标签: java tapestry

我发现了一个类似的帖子,但我的要求有点不同。

我的数据库中有一个表'Room'来存储有关房间的信息。表中的一个元素是price(在MySQL中浮动)。

我想用他们的信息打印我的所有房间,所以首先,我制作一个房间对象列表。 (使用createQuery)

现在,在 tml

<t:loop source="rooms" value="room">
   ${room.price}

$ {room.price}打印一个小数,例如120.0。

是否可以将该room.price传递给Java页面以删除小数点并正确打印?

3 个答案:

答案 0 :(得分:0)

解决。我不知道这是不是正确的方式,但我做了:

TML

e.stopPropagation();

的java

${getInt(room.precio)}

另一个更好的选择还是更好的代码?

答案 1 :(得分:0)

在tml中使用$ {roomPrice}

然后在Java中做这样的事情:

public String getRoomPrice() {
    return String.format("%.0f", room.getPrecio());
}

变化是无穷无尽的,包括用整数截断,但我认为这给出了基本的想法:在Java类而不是在tml文件中进行转换。

答案 2 :(得分:0)

另一种方法是创建一个新的Binding前缀,您可以在模板文件中使用该前缀,而无需在每个要进行格式化的页面类中添加方法。

您可以根据需要定义任意数量的格式化程序,然后您可以在项目中的任何位置使用,如下所示:

${format:price=room.price}

示例代码:

https://wiki.apache.org/tapestry/Tapestry5HowToAddMessageFormatBindingPrefix