1

这是 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}" />
4

1 回答 1

1

除了您发现自己的方式之外,另一种方式是:

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

    @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;
    
于 2013-08-05T00:53:02.737 回答