2013-11-04 41 views
0

看起來轉換器通常有兩種方法getAsObject()getAsString(),它們會將對象轉換爲字符串或從字符串轉換爲對象。jsf中轉換器的用途是什麼?

爲什麼我們需要這樣做?

例如,在dataTable中,我們總是可以將對象與var綁定。爲什麼我們不能在這裏做類似的事情?

回答

4

最後,客戶端(通常是瀏覽器)將收到您通常通過.xhtml文件構建的JSF Component樹的渲染版本。

例如,瀏覽器不知道約BigDecimalsDates。如果在表單的輸入字段中輸入「1.003」,瀏覽器應該如何知道它是否爲服務器端的StringfloatBigDecimal?它無法知道,也無法處理。因此服務器和瀏覽器之間的通信總是通過Strings。 HTML呈現時,將使用getAsString()方法。當處理傳輸的表單輸入時,JSF將使用getAsObject()將其轉換回真實類型。

爲什麼var在dataTables中工作?因爲在這裏你只會走「一條路」。 dataTable將只顯示一些內容,因此可以使用通用的toString()方法。在這種情況下,不需要轉換爲對象。

0

我會複製和粘貼balusc爲什麼我們應該用一個JSF轉換器一個偉大的答案(我不記得問題本身的鏈接)

JSF生成HTML。用Java來說HTML基本上就是一個大字符串。要用HTML表示Java對象,必須將其轉換爲String。另外,當提交HTML表單時,提交的值在HTTP請求參數中被視爲String。在封面之下,JSF從HttpServletRequest#getParameter()中提取它們返回String.To要在非標準的Java對象(即不是EL有內置轉換的字符串,數字或布爾值)之間進行轉換 您必須提供一個自定義的Converter for您的實體類。此Converter實現了兩種方法getAsString()方法,以便所需的Java對象以唯一的字符串表示形式和方法表示,以便HTTP請求參數可以轉換回所需的Java對象