OmniFaces 的使用 Param.validatorAttributes
Usage of OmniFaces Param.validatorAttributes
我尝试使用 OmniFaces @Param 注解来注入请求参数。
我还利用它的 validatorClasses
属性来验证参数。最终,这个使用过的验证器需要一个特殊的属性才能运行,我想通过设置 validatorAttributes
属性来传递值。不幸的是我不知道如何。 documentation 提供了描述,但我没听懂。
有人可以帮忙吗?
这是一些代码:
@Inject
@Param(
name = "the_param_name",
validatorClasses = MyFreshValidator.class,
validatorAttributes = ?
)
private MyFreshClass instance;
给验证者另一个相同class的对象是最理想的。
showcase确实有点隐蔽了。如果您打开 "Demo source code" 部分的 CdiParamBean
选项卡,您将找到带有以下示例的托管 bean 的源代码:
// Like <f:viewParam name="text2" value="#{bean.text2}" validatorMessage="..."><f:validateLength minimum="3">
@Inject @Param(
validatorClasses = LengthValidator.class,
validatorAttributes = @Attribute(name="minimum", value="3"),
validatorMessage = "{1}: Value is too too small! Please enter a minimum of 3 characters.")
private String text2;
// Like <f:viewParam name="date" value="#{bean.date}" converterMessage="..."><f:convertDateTime pattern="yyyyMMdd">
@Inject @Param(
converterClass = DateTimeConverter.class,
converterAttributes = { @Attribute(name="pattern", value="yyyyMMdd") },
converterMessage="{1}: \"{0}\" is not the date format we had in mind! Please use the format yyyyMMdd.")
private Date date;
这里的@Attribute
就是org.omnifaces.cdi.param.Attribute
。
我会在以后的版本中查看 improving 文档。
我尝试使用 OmniFaces @Param 注解来注入请求参数。
我还利用它的 validatorClasses
属性来验证参数。最终,这个使用过的验证器需要一个特殊的属性才能运行,我想通过设置 validatorAttributes
属性来传递值。不幸的是我不知道如何。 documentation 提供了描述,但我没听懂。
有人可以帮忙吗?
这是一些代码:
@Inject
@Param(
name = "the_param_name",
validatorClasses = MyFreshValidator.class,
validatorAttributes = ?
)
private MyFreshClass instance;
给验证者另一个相同class的对象是最理想的。
showcase确实有点隐蔽了。如果您打开 "Demo source code" 部分的 CdiParamBean
选项卡,您将找到带有以下示例的托管 bean 的源代码:
// Like <f:viewParam name="text2" value="#{bean.text2}" validatorMessage="..."><f:validateLength minimum="3">
@Inject @Param(
validatorClasses = LengthValidator.class,
validatorAttributes = @Attribute(name="minimum", value="3"),
validatorMessage = "{1}: Value is too too small! Please enter a minimum of 3 characters.")
private String text2;
// Like <f:viewParam name="date" value="#{bean.date}" converterMessage="..."><f:convertDateTime pattern="yyyyMMdd">
@Inject @Param(
converterClass = DateTimeConverter.class,
converterAttributes = { @Attribute(name="pattern", value="yyyyMMdd") },
converterMessage="{1}: \"{0}\" is not the date format we had in mind! Please use the format yyyyMMdd.")
private Date date;
这里的@Attribute
就是org.omnifaces.cdi.param.Attribute
。
我会在以后的版本中查看 improving 文档。