在metawidget中使用自定义值类型

时间:2017-11-04 20:09:00

标签: jsf metawidget

想象一下以下表单/ 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

这是最好的解决方案吗?

我想我也可以注册我自己的InspectionResultProcessorBankAccountNumber更改为String,但我甚至不知道是否将我的自定义类型映射到String首先是正确的做法。

1 个答案:

答案 0 :(得分:1)

建议的方法是注册您自己的WidgetBuilder以匹配type的属性BankAccountNumber并返回相应的小部件。您可以为每个其他null返回type,并依赖于使用CompositeWidgetBuilder让小部件构建过程“落实”#{1}}。大多数类型的常规HtmlWidgetBuilder

对于某种类型的UIInput,您返回的BankAccountNumber类型取决于您。但是如果您使用HtmlInputText,那么您可能需要以通常的方式注册JSF转换器(这一点不是Metawidget特有的),以便JSF知道如何从{{1}转换进入HtmlInputText

有关注册自定义BankAccountNumber(并将其与WidgetBuilder合并)的示例,请参阅“用户指南”的第2.4.4节和第2.4.5节:http://metawidget.org/doc/reference/en/html/ch02s04.html