Jsf 将内联文本中的double转换为int //omnifaces,请参见http://showcase.omnifaces.org/taghandlers/importFunctions //processedOrders是一个列表 [...]

Jsf 将内联文本中的double转换为int //omnifaces,请参见http://showcase.omnifaces.org/taghandlers/importFunctions //processedOrders是一个列表 [...],jsf,casting,converter,Jsf,Casting,Converter,${ordersToShow}是java.lang.Double类型(输出“${ordersToShow.class}”)并打印类似“Last Stuff 2.0”的内容 我想要像“Last Stuff 2”这样的输出,我该怎么做呢?您可以使用f:convertNumber。保持minFractionDigits=“0”应该可以做到这一点 看这里 我还没有使用p:fieldset,所以现在可以确定f:convertNumber如何与图例一起使用,但似乎不可能 您可以使用以下命令替换c:set和p

${ordersToShow}是java.lang.Double类型(输出“${ordersToShow.class}”)并打印类似“Last Stuff 2.0”的内容


我想要像“Last Stuff 2”这样的输出,我该怎么做呢?

您可以使用f:convertNumber。保持minFractionDigits=“0”应该可以做到这一点

看这里

我还没有使用p:fieldset,所以现在可以确定f:convertNumber如何与图例一起使用,但似乎不可能

您可以使用以下命令替换c:set和p:fieldset行。这里解释了fmt标签


[...]

f:convertNumber如果在内部使用p:fieldSet,则会为其抛出错误(父项不是ValueHolder的实例)

相反,您可以在托管bean中保留一个字符串,并在其getter中使用
string.format(“%.0f”,ordersToShow)


否则,为fieldSet保留一个绑定变量,并在bean中设置上述格式化值。

我必须在哪里添加转换器?
完全在Facelets中。我提到了jstl标记库。但是这里也有类似的标签f:convertNumberPlease post answers,它100%是基于自己的经验和/或对“隐藏”工作的了解,而不是胡乱猜测和在黑暗中拍摄。@BalusC我们必须在常见问题解答中包括你的那句话:)为什么一开始是双精度而不是整数?将表示“金额”的字段设置为双精度类型究竟有何意义?您的根本问题是错误的数据模型,而不是麻烦的表示。不知何故,您是对的,因为有了正确的数据模型,我就不会有这个问题。我更新了问题,以便更好地解释我的问题。如您所见,我无法更改数据模型,因为“ordersToShow”是在模板中创建的。感谢您的omnifaces::importFunctions。真的很奇怪,Math:min似乎为(int,int)-输入返回了一个double。无论如何,我认为这个要求“'cast'to int in jsf template”无论如何都是可能的。谢谢你的回复。最后我会这么做,但我的希望是在视图中解决此视图要求。
<o:importFunctions type="java.lang.Math" />//omnifaces, see http://showcase.omnifaces.org/taghandlers/importFunctions
<c:set var="ordersToShow" value="${Math:min(5, processedOrders.size())}" /> // processedOrders is a List
<p:fieldset legend="Last Stuff (${ordersToShow})">[...]</p:fieldset>
<fmt:formatNumber var="ordersToShow" type="number" maxFractionDigits="0" value="${...}" />
<p:fieldset legend="Last Stuff (${ordersToShow})">[...]</p:fieldset>