我有一个数字列表(范围500 - 5000,步骤500)。我想加一个小数点1000 -> 1000;2500 -> 2.500等,但只是为了标签不被保存为一个值。我尝试了以下操作,但没有成功:
<h:selectOneMenu value="#{bean.selectedValue}">
<f:convertNumber type="currency" locale="de-DE" pattern="#,###" />
<f:selectItems itemValue="#{bean.selectItemslist}" var="item" itemLabel="#{item.label}" itemValue="#{item.value} />
</h:selectOneMenu>
但这没有做任何事情:(
尝试了几个模式,包括integerOnly="true",但似乎没有工作:(谢谢你的帮助!
转换器仅应用于项值,而不应用于项标签。这就解释了为什么它会"失败"。在这种特殊情况下,最好的办法是创建一个自定义EL函数,这样您就可以像这样结束:
<f:selectItems ... itemLabel="#{my:formatNumber(item.label, '#,###')}" />
JSF实用程序库OmniFaces有几个,请参见OmniFaces functions/Numbers showcase。