Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我们如何使inputText接受我们有currencySymbol=”的数字$&引用;在数据表中,在JSF中,Primefaces?_Jsf_Jsf 2_Primefaces_Datatable - Fatal编程技术网

我们如何使inputText接受我们有currencySymbol=”的数字$&引用;在数据表中,在JSF中,Primefaces?

我们如何使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

为了实现这一点,我采取了:
,效果很好

数据表中的同一字段将作为输入字段,用于给出金额

但是,在尝试将值插入为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;
    }
}