2013-08-04 42 views
1

这是JSF中具有validateLength验证程序的输入字段的示例。在JSF2中外部化/集中验证属性

<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}" /> 
+0

到底是什么问题,当你尝试呢? – BalusC

+0

嗨Balus,没有遇到任何问题。但是有没有更好的方法来做到这一点? –

回答

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; 
    
+0

谢谢Balus分享这些信息。 –