关于我的语言环境设置,我想使用“,”作为分隔符。我的主要问题是,分隔符后面的数字甚至没有到达bean本身。
我已经尝试过将decimalSeparator =“,”添加到,但没有任何改变...
此cellEditor包括编辑器和输出:
<p:cellEditor>
<f:facet name="output">
<h:outputText id="grossMoney" value="#{item.grossMoney}">
<f:convertNumber locale="hu"/>
<f:convertNumber maxFractionDigits="2" minFractionDigits="0"/>
</h:outputText>
</f:facet>
<f:facet name="input">
<p:inputNumber id="grossMoneyEdit" decimalSeparator="," value="#{item.grossMoney}" >
<f:convertNumber locale="hu"/>
<!-- <f:convertNumber maxFractionDigits="2" minFractionDigits="0"/> -->
</p:inputNumber>
</f:facet>
</p:cellEditor>
这是bean方法,在该方法中,setter无法正确获取值:
public void setGrossMoney(BigDecimal grossMoney) {
if (grossMoney != null && grossMoney != BigDecimal.ZERO) {
if (vatRate == 0) {
netUnitPrice = grossMoney;
} else {
netUnitPrice = grossMoney.divide(BigDecimal.ONE.add(BigDecimal.valueOf(vatRate).divide(BigDecimal.valueOf(100L))), 3, RoundingMode.HALF_UP);
}
} else {
netUnitPrice = BigDecimal.ZERO;
}
}
预期结果很简单:如果我输入100,5,则应将其转换为BigDecimal并使用正确的值进行计算,在输出端也应将其显示为100,5。
答案 0 :(得分:1)
您正以多种方式指定同一方面:converter
,decimalSeparator
,language
,单个converters
中的多个component
。
Primefaces p:inputNumber
有一个简单的lang
uage属性-您尝试过吗?
<p:inputNumber value="#{myBean.decimalVal}" lang="hu"/>
<h:outputText value="#{myBean.decimalVal}">
<f:convertNumber locale="hu" />
</h:outputText>
您也没有在设置器中设置grossMoney
字段。取而代之的是您进行netUnitPrice
的计算。您最好在动作或(动作/ ajax)监听器中执行此操作。保持吸气剂/设置剂的琐碎。