0

想象一下以下表单/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的更改BankAccountNumberString任何地方,但我什至不知道将我的自定义类型映射到String是否是正确的方法。

4

1 回答 1

1

推荐的方法是注册您自己的WidgetBuilder以匹配的属性typeBankAccountNumber返回适当的小部件。您可以null每隔一个返回type,并依靠使用 aCompositeWidgetBuilder将小部件构建过程“失败”HtmlWidgetBuilder为大多数类型的常规。

UIInput你返回什么样的类型BankAccountNumber取决于你。但是如果您使用 aHtmlInputText那么您可能需要以通常的方式注册 JSF 转换器(此位不是特定于 Metawidget),以便 JSF 知道如何从HtmlInputText转换为BankAccountNumber.

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

于 2017-11-05T02:23:03.713 回答