[英]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()。
它僅accepting
以eg: $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.