簡體   English   中英

在JSF,Primefaces中,如何使inputText在DataTable中具有currencySymbol =“ $”的地方接受數字?

[英]How can we make an inputText accept Numbers where we had currencySymbol=“$” in a DataTable,in JSF, Primefaces?

我的方案:當我從數據庫中將數據檢索到數據$123,456.00時,將金額格式顯示為$123,456.00

為此,我采取了以下措施: <f:convertNumber currencySymbol="$" type="currency"/>可以正常工作。

數據表中的相同字段將作為用於輸入金額的輸入字段。

但是,我在嘗試將值插入為123456.00時遇到了Error()。

它僅acceptingeg: $123456.00值, eg: $123456.00接受eg: $123456.00

我的情況:即使我給它123456.00 ,然后保存,我也必須能夠取值。

我的代碼:

  <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' could not be understood as a currency value.

您不應在輸入文本字段內顯示$符號。 通常,貨幣符號將顯示為該字段的前綴。 例如,以下解決方案是最簡單的解決方案:

$<p:inputText value="#{bean.amount}">
    <pe:keyFilter regEx="/[0-9.]/i"/>
</p:inputText>

如果確實需要在輸入文本字段中放入$符號,則始終可以編寫自己的Converter 我認為以下應做的工作:

@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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM