想象以下形式/bean:
public class MyForm {
private BankAccountNumber accountNumber;
// getter + setter
}
哪里BankAccountNumber
是自定义值对象。
当我将 metawidget 和 jsf 与此类的实例一起使用时,不会为该accountNumber
属性生成任何输入字段(仅显示标签)。
问题是 metawidget 不知道BankAccountNumber
类型,也不知道UIInput
应该使用哪种类型。
到目前为止,我找到的唯一解决方案是注释我的财产@UiAttribute(name = "type", value = "java.lang.String")
并javax.faces.Converter
注册该BankAccountNumber
课程。这样,metawidget 会生成一个HtmlnputText
.
这是最好的解决方案吗?
我想我也可以注册我自己的InspectionResultProcessor
以更改BankAccountNumber
到String
任何地方,但我什至不知道将我的自定义类型映射到String
是否首先是正确的方法。
推荐的方法是,注册自己WidgetBuilder
要匹配的属性type
的BankAccountNumber
,并返回相应的部件。您可以null
为每个其他返回type
,并依靠使用 aCompositeWidgetBuilder
使小部件构建过程“失败”到HtmlWidgetBuilder
大多数类型的常规。
UIInput
你返回什么样的类型BankAccountNumber
取决于你。但是,如果你使用HtmlInputText
,那么你可能需要在通常的方式注册JSF转换器(该位是不特定于Metawidget),使JSF知道如何从转换HtmlInputText
成BankAccountNumber
。
有关注册自定义WidgetBuilder
(并将其与 结合CompositeWidgetBuilder
)的示例,请参阅用户指南的第 2.4.4 和 2.4.5 节:http : //metawidget.org/doc/reference/en/html/ch02s04.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句