在 metawidget 中使用自定义值类型
Working with custom value types in metawidget
想象一下 form/bean:
public class MyForm {
private BankAccountNumber accountNumber;
// getter + setter
}
其中 BankAccountNumber
是自定义值对象。
当我将 metawidget 和 jsf 与此 class 的实例一起使用时,没有为 accountNumber
属性 生成输入字段(仅显示标签)。
问题是 metawidget 不知道 BankAccountNumber
类型,也不知道应该使用哪种 UIInput
。
到目前为止我找到的唯一解决方案是用 @UiAttribute(name = "type", value = "java.lang.String")
注释我的 属性 并为 BankAccountNumber
class 注册一个 javax.faces.Converter
。
这样,metawidget 会生成一个 HtmlnputText
.
这是最好的解决方案吗?
我想我也可以注册我自己的 InspectionResultProcessor
以将 BankAccountNumber
更改为 String
但我什至不知道是否将我的自定义类型映射到 String
首先是正确的方法。
推荐的方法是注册您自己的 WidgetBuilder
以匹配 BankAccountNumber
的属性 type
和 return 适当的小部件。您可以 return null
每隔 type
,并依靠使用 CompositeWidgetBuilder
将小部件构建过程 'fall through' 转换为常规 HtmlWidgetBuilder
对于大多数类型。
您 return 属于哪种 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
想象一下 form/bean:
public class MyForm {
private BankAccountNumber accountNumber;
// getter + setter
}
其中 BankAccountNumber
是自定义值对象。
当我将 metawidget 和 jsf 与此 class 的实例一起使用时,没有为 accountNumber
属性 生成输入字段(仅显示标签)。
问题是 metawidget 不知道 BankAccountNumber
类型,也不知道应该使用哪种 UIInput
。
到目前为止我找到的唯一解决方案是用 @UiAttribute(name = "type", value = "java.lang.String")
注释我的 属性 并为 BankAccountNumber
class 注册一个 javax.faces.Converter
。
这样,metawidget 会生成一个 HtmlnputText
.
这是最好的解决方案吗?
我想我也可以注册我自己的 InspectionResultProcessor
以将 BankAccountNumber
更改为 String
但我什至不知道是否将我的自定义类型映射到 String
首先是正确的方法。
推荐的方法是注册您自己的 WidgetBuilder
以匹配 BankAccountNumber
的属性 type
和 return 适当的小部件。您可以 return null
每隔 type
,并依靠使用 CompositeWidgetBuilder
将小部件构建过程 'fall through' 转换为常规 HtmlWidgetBuilder
对于大多数类型。
您 return 属于哪种 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