category: Java
DATE : 2007/01/30 (Tue)
DATE : 2007/01/30 (Tue)
入力値と Backing Bean 間、Backing Bean と UIInput/ UIOutput 間で値の変換を行う Converter の中でも自作のものを指定する方法には、次の3種類があります。
- UIInput / UIOutput 系の要素の converter 属性で指定する。
- javax.faces.converter.Converter インタフェースを実装したクラスの完全修飾名で指定する。
- アプリケーションに登録された Converter の ID で指定する。
- f:converter 要素で指定する。
それぞれの例を示すと、次のようになります。(「...」は省略を表します)
<%-- converter 属性にクラスの完全修飾名で指定 --%> <h:inputText converter="myapp.MyConverter" ... /> <%-- converter 属性に ID で指定 --%> <h:inputText converter="converter" ... /> <%-- f:converter 要素で指定 --%> <h:inputText ... > <f:converter converterId="converter" /> </h:inputText>
ところで、JSF では、Backing Bean やそのプロパティを指定するためによく次のようなコードを書きます。
<%-- person という Backing Bean の name プロパティを出力する --%> <h:outputText value="#{person.name}" />
(;^ω^)そのため、Converter を指定する際に次の間違いを犯してしまいました。
<%-- 以下は間違い --%> <h:inputText converter="#{converter}" ... />
(;´Д`)間違えて上のように指定した場合、入力値と Backing Bean 間でデータ型が異なっていればアプリケーションがエラーを吐きますが、データ型が同じ(java.lang.String)の場合は、何事もなかったかのように処理が進行します。
参考文献
PR
●この記事にコメントする
忍者ブログ [PR]