2011-03-22 41 views
0

我有一個inputText,它接受來自用戶的值並綁定到double。如果該值爲「5000」,則後續頁面將顯示爲「5000.0」。 有沒有什麼辦法來格式化它,如果用戶輸入一個非小數的數字,它不會顯示小數?在JSF中爲非小數數字格式化一個雙精度型值

例子:
用戶輸入 「5000」 顯示 「5000」
用戶輸入 「5000.1」 秀 「5000.1」

<h:inputText value="#{sessionScope.eventDO.area}" id="areaInTxtId"> 
    <f:convertNumber pattern="###0"/> 
</h:inputText> 

我使用F已經試過:convertNumber標籤但我得到這個錯誤:

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Double

我不想ch改變任何Java代碼。只有雙倍的介紹。

回答

0

轉換器將轉換爲進一步使用的數字。如果要在與用戶交互時添加特定行爲,請嘗試使用JavaScript「onkeyup」事件並使用提供的數據進行操作。演示文稿是用戶特定的,因此應該位於服務器之外。

1

如果你沒有找到一個模式,你可以編寫自己的擴展名爲NumberConverter。我從來沒有嘗試過,但它應該工作similiar就象這樣:

@FacesConverter(value="ExampleConverter") 
public class ExampleConverter extends NumberConverter { 

    String getAsString(FacesContext context, UIComponent component,Object value) { 
    // call super.getAsString(...) and cut trailing .0 
    } 
} 

使用轉換器中的facelet這樣:

<h:inputText value="#{sessionScope.eventDO.area}" id="areaInTxtId"> 
    <f:converter converterId="exampleConverter" /> 
</h:inputText> 
相關問題