【问题标题】:Externalize / centralize validation properties in JSF2在 JSF2 中外部化/集中验证属性
【发布时间】:2013-08-04 13:34:50
【问题描述】:

这是 JSF 中具有 validateLength 验证器的输入字段的示例。

<p:inputText id="priceModelName" size="30"
    value="#{createPriceModelBackingBean.priceModel.priceModelName}"
    required="true" label="#{labelResource.priceModelName}">
    <f:validateLength minimum="3" maximum="45" />
</p:inputText>

priceModelName 输入字段在另一个 xhtml(create.xhtml 和 edit.xhtml)中重复,我希望将 minimummaximum 的值外部化/集中化,以免重复。这种用例有什么好的推荐吗?

我在考虑可能使用属性文件。

<f:validateLength minimum="#{validationResource.priceModel.minimum}" maximum="#{validationResource.priceModel.minimum}" />

【问题讨论】:

  • 您尝试这样做时究竟是什么问题?
  • 嗨,Balus,没有遇到任何问题。但是有没有更好的方法来做到这一点?

标签: validation jsf-2


【解决方案1】:

除了你自己发现的方式之外,其他方式是:

  1. 扩展 JSF LengthValidator 并在构造函数中设置默认值。

    @FacesValidator("priceModelNameLengthValidator")
    public class PriceModelNameLengthValidator extends LengthValidator {
    
        public PriceModelNameLengthValidator() {
            setMinimum(3);
            setMaximum(45);
        }
    
    }
    

    (如有必要,将这些幻数设为常量或配置设置)

    并重复使用它

    <f:validator validatorId="priceModelNameLengthValidator" />
    

  2. 使用 JSR 303 bean 验证。

    @Size(min=3, max=45)
    private String priceModelName;
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多