2017-11-04 3 views
0

にカスタム値型での作業には、次の形式/豆を想像:BankAccountNumberはカスタム値オブジェクトであるmetawidget

public class MyForm { 

    private BankAccountNumber accountNumber; 

    // getter + setter 
} 

このクラスのインスタンスでmetawidgetとjsfを使用すると、accountNumberプロパティの入力フィールドは生成されません(ラベルのみが表示されます)。

問題はmetawidgetがBankAccountNumberタイプを知らず、どのタイプのUIInputを使用するべきかわかりません。

これまで私が見つけた唯一の解決策は、@UiAttribute(name = "type", value = "java.lang.String")で自分の所有物に注釈を付け、BankAccountNumberクラスで​​を登録することでした。 こうして、metawidgetはHtmlnputTextを生成します。

最高のソリューションですか?

は、私はまた、どこにでもStringからBankAccountNumberを変更するには、私自身のInspectionResultProcessor登録することができますがStringに私のカスタム型をマッピングすると、最初の場所でそれを行うための正しい方法であれば私も知らないと思います。

答えて

1

を登録して、typeの属性がBankAccountNumberになるように登録し、適切なウィジェットを返すことをお勧めします。他のすべてのtypenullを返すことができ、CompositeWidgetBuilderを使用して、ほとんどのタイプでウィジェット作成プロセス 'fall through'を通常のHtmlWidgetBuilderにすることに頼ります。

BankAccountNumberのタイプの場合はまったく返されません。しかしHtmlInputTextを使用している場合は、普通の方法でJSFコンバーターを登録する必要があります(このビットはMetawidgetに固有ではありません)。HtmlInputTextからBankAccountNumberに変換する方法をJSFが認識できるようにします。カスタムWidgetBuilderを登録する(とCompositeWidgetBuilderと組み合わせること)の例については

、セクション2.4.4およびユーザーガイドの2.4.5を参照してください。http://metawidget.org/doc/reference/en/html/ch02s04.html