我们如何使inputText接受我们有currencySymbol=”的数字$&引用;在数据表中,在JSF中,Primefaces?
我的场景:当我从数据库检索数据到数据表时,将金额格式显示为$123456.00 为了实现这一点,我采取了:我们如何使inputText接受我们有currencySymbol=”的数字$&引用;在数据表中,在JSF中,Primefaces?,jsf,jsf-2,primefaces,datatable,Jsf,Jsf 2,Primefaces,Datatable,我的场景:当我从数据库检索数据到数据表时,将金额格式显示为$123456.00 为了实现这一点,我采取了:,效果很好 数据表中的同一字段将作为输入字段,用于给出金额 但是,在尝试将值插入为123456.00时,我遇到了Error() 它只接受用$only预先固定的值,例如:$123456.00 我的案例:我必须能够获取价值,即使我以123456.00的形式给出,然后保存 MyCode: <p:column headerText="Amount" styleClass="ralign"&
,效果很好
数据表中的同一字段将作为输入字段,用于给出金额
但是,在尝试将值插入为123456.00时,我遇到了Error()
它只接受用$only预先固定的值,例如:$123456.00
我的案例:我必须能够获取价值,即使我以123456.00
的形式给出,然后保存
MyCode:
<p:column headerText="Amount" styleClass="ralign">
<p:inputText value="#{bean.amount}">
<f:convertNumber currencySymbol="$" type="currency"/>
<pe:keyFilter regEx="/[0-9.]/i"/>
</p:inputText>
</p:column>
如果我试图将数字插入为
12345
,则引发的错误为0:j_idt109:“123456”无法理解为货币值。
您不应在输入文本字段中显示$
符号。通常,货币符号将显示为字段的前缀。例如,下面的解决方案是最简单的:
$<p:inputText value="#{bean.amount}">
<pe:keyFilter regEx="/[0-9.]/i"/>
</p:inputText>
它以前可以查看$符号,但它的格式不是$123456789.00,而是$123456789。00@user2561626:是的:)。我的
转换器
还没有该功能。您需要对Java中的货币字符串格式进行一些研究,以增强代码。应该很简单:)
@FacesConverter("converter.currencyConverter")
public class CurrencyConverter implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
if (value != null && value.startsWith("$")) value = value.subString(1);
return Double.parseDouble(value);
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return "$" + value;
}
}